C中的无限循环fscanf

时间:2016-07-16 21:37:25

标签: c scanf

我遇到了fscanf卡在无限循环中的问题。 {

char num;

FILE *filePtr;

if ((filePtr = fopen("filename.txt", "r")) == NULL)
{
    printf("File could not be opened");
}
else
{
    while (fscanf(filePtr, "%20[^ ,]", &num) != EOF)
    {
        displayFun(num);
    }

}

return 0;

我需要它读取的文件输入是: 0,1,2,3,16,17,1234,5678,-201,65534,65535,65536,-1

由于某种原因,代码卡在循环中并且第一个零并且不会继续到其他数字。

1 个答案:

答案 0 :(得分:2)

"%20[^ ,]"从不消耗,或空格。他们会留在filePtr进行下一次fscanf()通话。代码需要以某种方式读取,和空格。

@melpomene评论时,将文字作为字符串读取到char中将不起作用,

建议您改为阅读int,

int number;
while (fscanf(filePtr, "%d,", &number) == 1) {
    displayFun(num);
}