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