我使用fgets()
扫描文件如下终止循环:用于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循环应该看起来像什么建议?
显示更多的代码。你可能忘记增加'p',或在其他地方出错。检查'\ 0'是正确的方法。 strlen()非常“精确”,所以这也表明其他地方的错误。 – nos 2012-07-17 09:19:11
你是怎么使用'strlen'的? – 2012-07-17 09:20:33
除了忘记按照@nos的指示递增之外,您还可以将p增加一倍,跳过终止的'\ 0'。 – 2012-07-17 09:21:28