0

fscanf(); を使用して char ごとにテキスト ファイルを読み取っています。

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。ファイルを 1 文字ずつ読み取る場合は、文字を読み取る関数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 に答える