功能中的fscanf(语言C)

时间:2012-11-17 23:20:56

标签: c file

我正在使用fscanf();

读取char的文本文件char

我试图将我的FILE指针传递给一个函数,继续在那里阅读,但是我陷入了一个循环。

void keepReading(FILE *fp){
     char c;
     fscanf(fp, "%c", &c);
}

/* main */
fscanf(fp, "%c", &c);
while(c!='A'){
    keepReading(fp);
}

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

c中的变量keepReading()是该函数的本地变量。将值返回到循环并测试

char keepReading(FILE *fp){
     char c;
     fscanf(fp, "%c", &c);
     return c;
}

/* main */
fscanf(fp, "%c", &c);
while(c!='A'){
    c = keepReading(fp);
}

答案 1 :(得分:0)

不要使用fscanf,如果要逐个字符地读取文件,请使用读取字符fgetc的函数。 fscanf用于读取格式化数据。

#include <stdio.h>

int main(void)
{
    FILE *file = fopen("...", "r");
    int c;
    while ((c = fgetc(file)) != EOF)
    {
        if (c == 'A') break;
        // do stuff
    }
    fclose(file);
}