使用fgets()终止循环

时间:2012-07-17 09:14:57

标签: c file-io 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循环应该是什么样的任何建议?

1 个答案:

答案 0 :(得分:1)

为什么不迭代如下:

int i, buflen;
buflen = strlen(buf);
for(i=0; i<buflen; i++) {
   // your code on buf[i]
}