0

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并运行了一个 for 循环,strlen但这并不准确。

关于我的 while 循环应该是什么样子的任何建议?

4

1 回答 1

1

为什么不迭代如下:

int i, buflen;
buflen = strlen(buf);
for(i=0; i<buflen; i++) {
   // your code on buf[i]
}
于 2012-07-17T09:26:00.463 回答