- ベストアンサー
fscanf()
fcanf()がうまくいきません。 画面には、42640888のような数値が表示されます。 どこが間違ってるか教えてください。 (test.txtに23と書いてあるとします。) #include<stdio.h> int main(void) { FILE *fp; FILE *fp1; char str[10]; int a; fp=fopen("test.txt","r") fp1=fopen("a.txt","w") while(!feof(fp)){ fgets(str,8,fp); fputs(str,fp1); } fscanf(fp,"%d",&a); printf("%d",a); fclose(fp); fclose(fp1); return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
fpのファイルポインタはすでにファイル終端(EOF)まで行っているのでfscanfしても何も読み込まれないでしょう。 画面に表示されたのはint aで宣言されたときのでたらめな値と思われます。 ファイルの先頭から読み込み直したいのならfscanfの前に fseek(fp, 0, SEEK_SET); を入れればよいです。
その他の回答 (1)
- syama2006
- ベストアンサー率38% (14/36)
回答No.2
while()でファイルポインタfpはeofに達しているため、fscanf()は正しいデータを読み込めないですね。
質問者
お礼
素早い回答ありがとうございます。 解りやすい解説ありがとうございます!
お礼
素早い回答ありがとうございます。 解決できました! ありがとうございます。