我正在使用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循环应该是什么样的任何建议?
答案 0 :(得分:1)
为什么不迭代如下:
int i, buflen;
buflen = strlen(buf);
for(i=0; i<buflen; i++) {
// your code on buf[i]
}