- ベストアンサー
ファイルからのデータ入力
ファイルから数字を読み取って最初の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); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
えっと、 while(fscanf(f,"%d",&b)!=EOF){ a.push_back(b); } では? fscanfの \n はいらないですね。また、fscanfで値を受け取る変数はポインタにしないと・・・ fsacnfの第一引数、タイプミスですよね。 それと、元のロジックだと1つおきのデータしか取り込まれないのでは?(2番目,4番目・・・)
その他の回答 (1)
> ファイルから数字を読み取って最初の5文字だけを > 出力するプログラム それならわざわざ数値に変換しなくても, char buf[6]; fgets(buf, sizeof(buf), fp); puts(buf); とかでいいと思いますが。