• ベストアンサー

ファイルからのデータ入力

ファイルから数字を読み取って最初の5文字だけを 出力するプログラムのつもりなんですが、動きません。 VC++6.0で、OSはwin2kです。 ファイルの終わりをどう検出するかの問題だと思いますが、 よく分かりません。教えていただけると助かります。 #include <stdio.h> #include <cstdlib> #include <fstream.h> #include <iostream.h> #include <vector> using namespace std; void main(){ FILE *f; f=fopen("dat.txt","r"); vector <int> a; int b,c; while((c=fscanf("f","%d\n",b))!=EOF){ fscanf("f","%d\n",b); a.push_back(b); } for(int i=0;i<5;i++){ printf("%d",a[i]); } fclose(f); }

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

  • ベストアンサー
  • gatyan
  • ベストアンサー率41% (160/385)
回答No.2

えっと、 while(fscanf(f,"%d",&b)!=EOF){ a.push_back(b); } では? fscanfの \n はいらないですね。また、fscanfで値を受け取る変数はポインタにしないと・・・ fsacnfの第一引数、タイプミスですよね。 それと、元のロジックだと1つおきのデータしか取り込まれないのでは?(2番目,4番目・・・)

その他の回答 (1)

noname#5537
noname#5537
回答No.1

> ファイルから数字を読み取って最初の5文字だけを > 出力するプログラム それならわざわざ数値に変換しなくても, char buf[6]; fgets(buf, sizeof(buf), fp); puts(buf); とかでいいと思いますが。

関連するQ&A

専門家に質問してみよう