• ベストアンサー

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; }

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

fpのファイルポインタはすでにファイル終端(EOF)まで行っているのでfscanfしても何も読み込まれないでしょう。 画面に表示されたのはint aで宣言されたときのでたらめな値と思われます。 ファイルの先頭から読み込み直したいのならfscanfの前に fseek(fp, 0, SEEK_SET); を入れればよいです。

noname#168725
質問者

お礼

素早い回答ありがとうございます。 解決できました! ありがとうございます。

その他の回答 (1)

  • syama2006
  • ベストアンサー率38% (14/36)
回答No.2

while()でファイルポインタfpはeofに達しているため、fscanf()は正しいデータを読み込めないですね。

noname#168725
質問者

お礼

素早い回答ありがとうございます。 解りやすい解説ありがとうございます!

関連するQ&A