文本文档中的内容格式是
english
中文
即一行英文一行中文!
假设有如下链表结构:
struct word
{
char enword[18];
char cnword[128];
struct word * next;
};
如何读取该文本文档中的数据,将第一行的英文给enword,第二行的中文给cnword?而第二行的中文可能存在空格,如何只判断换行呢?
是利用指针遍历文件内容,然后存入链表,貌似二楼的getchar(),在这里不能用吧!
fscanf函数不能够按照回车换行读取数据,它遇到空格字符时也会断开,建议使用fgets函数。
scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
fgets函数从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
函数原型
char *fgets(char *buf, int bufsize, FILE *stream);
参数
*buf: 字符型指针,指向用来存储所得数据的地址。
bufsize: 整型数据,指明存储数据的大小。
*stream: 文件结构体指针,将要读取的文件流。
返回值
成功,则返回第一个参数buf;
在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;
如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。
用C语言如何读取TXT文件中列数据?
可以给你个练习程序,自己改吧。。。(已知磁盘上的文件test2-2.txt文本文件中包含有3个字符串,每个串的长度小于80且3个串之间以换行符做分隔。编写的程序应实现:(1)从文件中读入3个串,并将它们按升序排序。(2)将排序后的3个串输出到屏幕,并追加输出到原来文件的尾部。)include <stdio.h>...