fscanf(); を使用して char ごとにテキスト ファイルを読み取っています。
FILE ポインターを関数に渡して読み取りを続けようとしましたが、ループに陥っています。
void keepReading(FILE *fp){
char c;
fscanf(fp, "%c", &c);
}
/* main */
fscanf(fp, "%c", &c);
while(c!='A'){
keepReading(fp);
}
何か案は?
変数c
inkeepReading()
は、その関数に対してローカルです。ループに値を返し、それをテストします
char keepReading(FILE *fp){
char c;
fscanf(fp, "%c", &c);
return c;
}
/* main */
fscanf(fp, "%c", &c);
while(c!='A'){
c = keepReading(fp);
}
これには使用しないでください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);
}