C语言 格式读取 fscanf() 如何读取至末尾结束(txt)

2024-12-22 19:23:34
推荐回答(5个)
回答1:

fscanf是有返回值的。如果返回EOF,证明到达文件结尾

在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。 

扩展资料:

应用

档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF会在编译原始码前展开实际值给预处理器。

C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。

回答2:

fscanf如果读取到文件尾会返回NULL, 可以从这点判断是不是到文件尾.
while(!fscanf(stream, "format", ...));
这样就可以把一个文件的内容读取完毕.

stream是输入流, 即文件指针.
"format"是格式字符串, 即用于写%s, %d的地方.
... 即后面跟的不定参数.

回答3:

fscanf是有返回值的。如果返回EOF,证明到达文件结尾

回答4:

应取下面的办法↓
fscanf返回值null的办法报错

回答5:

你可以用fgets()按行读取内容到
字符串变量里,然后处理。
假如已读入到
str[80]
里:
char
str[80]="or2_x2
c401
(
.a1(n66),
.a2(n85),
.zn(n142)
)";
多行这样的文字格式,
如果位置固定,可以直接读出:
char
r[4][5];
sscanf(str,"%s",r[0]);
r[0][3]='\0';printf("%s\n",r[0]);
sscanf(str+18,"%s",r[1]);
r[1][2]='\0';printf("%s\n",r[1]);
sscanf(str+28,"%s",r[2]);
r[2][3]='\0';printf("%s\n",r[2]);
sscanf(str+38,"%s",r[3]);
r[3][4]='\0';printf("%s\n",r[3]);
------------------------
如果位置不固定,我们可以用查找
点号的位置加4:
int
i,j,l[3];
j=0;
for
(i=0;i
评论
0
0
0
加载更多