读写以逗号分界的文本

   目前,以逗号分界的文本被许多流行的程序用作一种在程序间传递数据的手段,例如将表格程序中的数据传递到数据库程序中。
   
在以逗号分界的文本中,所有的数据(数值型数据除外)都用一对双引号(" ")括起来,并且后面都要跟一个逗号,但数值型数据仍保留原来的形式,不用加双引号。此外,在文本的行尾,逗号被省去,但要加上一个换行符。  

一个读写以逗号分界的文本的例子

#include <stdio.h>
#include <string.h>
 
typedef struct name_str
{
     char    first_name[15];
     char    nick_name [30];
     unsigned years_known;
} NICKNAME;
NICKNAME nick_names[5];
void set_name(unsigned, char * , char * , unsigned);
void main(void)
{
     FILE * name_file;
     int    x ;
     NICKNAME tmp_name;
     printf("/nWriting data to NICKNAME.DAT, one moment please.., /n");
 
     /* Initialize the data with some values... */
     set_name (0,    "Sheryl",     "Basset",    26);
     set_name (1,    "Joel",       "Elkinator", 1);
     set_name (2,    "Cliff",      "Shayface", 12);
     set_name (3,    "Lloyd",      "Lloydage", 28);
     set_name (4,    "Scott",      "Pie",       9);
 
     /* Open the NICKNAME. DAT file for output in text mode. */
     name_file = fopen("NICKNAME.DAT", "wt");
 
     /* Iterate through all the data and use the fprint() function
          to write the data to a file. */
     for (x=0; x<5; x++)
        {
           fprintf(name_file, "/" %s/", /" %s/", %u/n",
                        nick_names[x].first_name,
                           nick_names[x].nick_name,
                           nick_names[x].years_known );
    }
 
     /* Close the file and reopen it for input. */
     fclose (name_file );
     printf("/nClosed NICKNAME.DAT, reopening for input... /n");
     name_file = fopen("NICKNAME.DAT", "rt");
     printf("/nContents of the file NICKNAME.DAT: /n/n");
 
     /* Read each iine'in the file using the seanf() function
          and print the file's contents. */
     while (1)
     {
            fscanf(name_file, "%s %s %u",
                            tmp_name.first_name,
                            tmp_name.nick_name,
                            &tmp_name.years_known);
            if (feof (name_file ) )
                 break;
            printf(" %-15s% -30s %u/n",
                           tmp_name.first_name,
                           tmp_name.nick_name,
                           tmp_name.years_known);
     }
     fclose (name_file );
}
void set_name (unsigned name_num, char *f_name,
                  char * n_name, unsigned years)
{
           strcpy (nick_names [name_num].first_name, f_name);
           strcpy (nick_names [name_num].nick_name, n_name);
           nick_names[name_num].years_known = years;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值