如何读取文件 C,fscanf 结尾
How to read until end of file C, fscanf
我从文件中读取的内容:不同行的 P1/ s/ e/ t 等 /。在特定字母(如 'a')之后是一些我必须收集的数据,所以我不想使用 fgets。它没有结束 运行。请问你能帮帮我吗?
char com[21];
fscanf(src,"%s",com);
while(com!=EOF)
{
if(com[0]=='a')
fprintf(dest,"%s 1",com);
if(com[0]=='s')
fprintf(dest,"%s 2",com);
fscanf(src,"%s",com);
}
简单的方法是测试 fscanf()
是否成功作为循环条件,并且在循环之前不需要 fscanf()
:
char com[21];
while(fscanf(src,"%20s",com) == 1)
{
if(com[0]=='a')
fprintf(dest,"%s 1",com);
if(com[0]=='s')
fprintf(dest,"%s 2",com);
}
fscanf()
returns 成功扫描的项目数。所以,你不需要检查它是否返回 EOF
.
请注意,我更改了格式字符串以避免缓冲区溢出。我建议您使用 fgets()
而不是 fscanf()
(如果重要,请记住处理换行符)。
请注意 fscanf
returns 和 integer
可以指示 EOF
到达文件末尾时。有关详细信息,请参阅手册页。
您的代码必须修改如下:
char com[21];
int ret;
ret = fscanf(src,"%s",com);
while(ret!=EOF)
{
if(com[0]=='a')
fprintf(dest,"%s 1",com);
if(com[0]=='s')
fprintf(dest,"%s 2",com);
ret = fscanf(src,"%s",com);
}
我从文件中读取的内容:不同行的 P1/ s/ e/ t 等 /。在特定字母(如 'a')之后是一些我必须收集的数据,所以我不想使用 fgets。它没有结束 运行。请问你能帮帮我吗?
char com[21];
fscanf(src,"%s",com);
while(com!=EOF)
{
if(com[0]=='a')
fprintf(dest,"%s 1",com);
if(com[0]=='s')
fprintf(dest,"%s 2",com);
fscanf(src,"%s",com);
}
简单的方法是测试 fscanf()
是否成功作为循环条件,并且在循环之前不需要 fscanf()
:
char com[21];
while(fscanf(src,"%20s",com) == 1)
{
if(com[0]=='a')
fprintf(dest,"%s 1",com);
if(com[0]=='s')
fprintf(dest,"%s 2",com);
}
fscanf()
returns 成功扫描的项目数。所以,你不需要检查它是否返回 EOF
.
请注意,我更改了格式字符串以避免缓冲区溢出。我建议您使用 fgets()
而不是 fscanf()
(如果重要,请记住处理换行符)。
请注意 fscanf
returns 和 integer
可以指示 EOF
到达文件末尾时。有关详细信息,请参阅手册页。
您的代码必须修改如下:
char com[21];
int ret;
ret = fscanf(src,"%s",com);
while(ret!=EOF)
{
if(com[0]=='a')
fprintf(dest,"%s 1",com);
if(com[0]=='s')
fprintf(dest,"%s 2",com);
ret = fscanf(src,"%s",com);
}