0

我正在使用 fscanf() 逐字符读取文本文件;

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

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

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

有任何想法吗?

4

2 回答 2

2

变量cinkeepReading()是该函数的局部变量。将值返回到您的循环并进行测试

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

/* main */
fscanf(fp, "%c", &c);
while(c!='A'){
    c = keepReading(fp);
}
于 2012-11-17T23:24:44.533 回答
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);
}
于 2012-11-17T23:44:48.667 回答