我正在使用 fgets()
扫描文件,如下所示:
char buf[50];
if (fgets(buf, 50, fp) == NULL) {
printf("Error in file parsing.\n");
exit(1);
}
char *p;
p = buf;
p
指向缓冲区,我使用它来迭代扫描的字符串。 fgets()
的大小为 50,但它确实在扫描的字符串末尾添加了一个空终止符。
我的 while 循环如下所示:
while (*p != '\0')
当我的文本文件具有:1 + 23
时,此方法有效。当文本文件包含 1 + 23 - 5
时,它会遇到无限循环。为什么会发生这种情况?
我还尝试检查 \n
但也失败了。最后,我使用了 strlen
并根据 strlen
运行了一个 for 循环,但这并不准确。
关于我的 while 循环应该是什么样子有什么建议吗?
最佳答案
为什么不按如下方式迭代:
int i, buflen;
buflen = strlen(buf);
for(i=0; i<buflen; i++) {
// your code on buf[i]
}
关于c - 使用 fgets() 终止循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519428/