如何解决在 C 中再次循环
我的文本文件是这样的:
这是我的代码
#include <stdio.h> #include <stdlib.h> void read_fp(FILE *fp){ char buffer[50]; fgets(buffer,sizeof(buffer),fp); printf("%s",buffer); } int main(int argc,char* argv[]){ FILE* fp = fopen(argv[1],"r"); while(1){ if(feof(fp)) break; read_fp(fp); } return 0; }
或
int main(int argc,"r"); while(!feof(fp)){ read_fp(fp); } return 0; }
我预测我的程序打印 一 二 三 四 五 六
但程序实际打印 一 二 三 四 五 六 六
它再次循环
为什么……?我该如何解决这个问题
解决方法
读取文件的最后一条记录后,条件 feof( fp )
尚未设置。
所以在函数中你试图再访问一个文件
void read_fp(FILE *fp){
char buffer[50];
fgets(buffer,sizeof(buffer),fp);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
printf("%s",buffer);
}
在这种情况下,条件满足并且 fgets
的调用返回 NULL
。但是您正在输出存储在 buffer
中的当前值,这会导致未定义的行为。
您可以更改功能,例如
void read_fp(FILE *fp){
char buffer[50];
If ( fgets(buffer,fp) ) printf("%s",buffer);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。