• 締切済み

テキストファイルの読み込みについて教えて

また教えてください test13.txtの中身を1,2,3,4,5,6として、以下をコンパイルスルと、 printf("%d\n",a[0]);のときは 1 と結果がでますが printf("%d\n",a[3]);とすると -858993460などと、わからない数字がでます、どこがおかしのか初心者なのでさっぱりわかりません。 #include <stdio.h> int main(void) { int i; int a[6]; FILE *file; file = fopen("d:\\test\\test13.txt","r"); for(i=0;i<6;i++) fscanf(file,"%d",&a[i]); fclose(file); printf("%d\n",a[3]); return 0; }

みんなの回答

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

> fscanf(file,"%d",&a[i]); を、 fscanf(file,"%d,",&a[i]); と修正してみてください。 なお、ファイルのオープンがいつも成功するとは限りません。 fopen()の戻り値を必ずチェックしてください。

nichirei
質問者

お礼

ありがとうございました。  まともにうごきました。 "%d,"の , をつけるだけなんですね、 でもなんでかわからない??? またよろしくお願いします。

noname#77845
noname#77845
回答No.1

テキストファイルの中身を 1,2,3,4,5,6  ↓ 1 2 3 4 5 6 に変更しましょう。

nichirei
質問者

お礼

できました。 ありがとうございました。 又わからないときには、よろしくお願いします。

関連するQ&A

  • テキストファイルの読み込みについて

    先ほどいくつかの回答をいただきありがとうございました。 またもや分からないことがあります、よろしくご回答お願いします。 test.txtと言うファイルを作り、その中は、10,20,30,40, 50,60としています。 これを以下のプログラムをVisual C++ 2005 Express Editionでコンパイルすれば読み込めるんですが、 #include <stdio.h> int main(void) { int i,j,k,l,m,n; FILE *file; file = fopen("test.txt","r"); fscanf(file,"%d,%d,%d,%d,%d,%d",&i,&j,&k,&l,&m,&n); fclose(file); printf("i = %d : j = %d : k = %d : l = %d : m = %d : n = %d\n",i,j,k,l,m,n); return 0; } このtest.txtをDドライヴの中のfileと言うフォルダに移した場合 どのようにプログラムを書き換えれば良いのでしょうか。

  • ファイルが読み込めない

    testのなかみを test,  22.2,  33.3,  として、 Visual C++ 2005でこれをコンパイルすると、わけのわからない数字がでてきます。 初心者なのでどこが間違ってるのかわかりません。 よろしくお願いします。 #include <stdio.h> int main(void) { char str[20]; double i,j; FILE *file; file = fopen("d:\\test\\test","r"); fscanf(file,"%s, %lf, %lf,",str,&i,&j); fclose(file); printf("i = %f : j = %f\n",i,j); return 0; }

  • ファイルの入力、出力

    #include<stdio.h> int main(){ int a,b; FILE *fp0, *fp1;   fp0 = fopen("test1.dat", "r"); if( fp0 == NULL ){ printf("Cannot open test1.dat"); exit(1); } fp1 = fopen("file.txt", "w"); while((fscanf(fp0, "%d %d", &a,&b)) != EOF){ fprintf(fp1, "%d %d\n", a*a,b*b); } fclose(fp0); fclose(fp1); return(0); } test1.datファイルを読み込んで、変数a,bに値をいれ、 その二乗結果をfile.txtに書き込むプログラムなのですが test1.datファイルに書き込まれてる値をどのようにa,bに代入されているのかわかりません。 例えば test1.datが 1 2 3 4 5 であると、 file.txtには 1 4 9 16 25 16 と書き込まれています。 test1.datが 1 1 2 2 3 3 であると file.txtには 1 1 4 4 9 9 となっています。 どのように、変数に値が入るのでしょうか??

  • C言語 テキストの場合分け

    C言語プログラミングの質問です。 x1, y1, r1, distance1 x2, y2, r2, distance2 ・・・ と続くテキストを読み込み、distanceを10刻みで場合分けをするプログラムを作成しています。初心者で苦戦しているところですが、以下のサンプルの間違いをご指摘いただけませんでしょうか。 よろしくお願いいたします。 テキストの行数とdistanceの最大値は不明です。 ーーーーーーーー #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <locale.h> int main(int argc, char *argv[]) { int a,b,c,distance; int i=0; int num[200]; FILE* inifile = fopen("file.txt", "r"); if(inifile==NULL) { printf("err__file.txt is nothing!!"); return 0; } FILE* outfile = fopen("outfile.txt", "w"); if(outfile==NULL) { printf("err__outfile.txt is nothing!!"); return 0; } while (fscanf(inifile,"%d\t %d\t %d\t %d\n", &a, &b, &c, &distance) != EOF) fclose(inifile); for(int i =1; i<101; i++) { if((i-1)*10 <= distance && distance < i*10) { num[i]+=1; } } for(int i =1; i<101; i++) { fprintf(outfile, "%d\t", num[i]); } fclose(inifile); fclose(outfile); printf("Normal END\n"); return 0; }

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

    ファイルから数字を読み取って最初の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); }

  • datファイルの読み込み

    初歩的な質問ですみません。 今、819200行のファイルをfscanfで読み込んで配列に格納しているのですが、実行してみるとBus errorが出力されてしまい、うまく格納できません。どなたか至急教えてもらえませんか? ***************************ソース************************************************************ #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #define pi 3.1415926535 //円周率 #define FILE_SIZE 819200 #define FILE_NAME "test.dat" struct Data{ int time; double voltage; double velocity; double pressure; double trigger; }; int main() { int k,n,N,i=0,j; struct Data dat[FILE_SIZE]; FILE *fp1; FILE *fp2; if ((fp1 = fopen(FILE_NAME,"r")) == NULL) { printf( "file open error\n" ); exit(EXIT_FAILURE); } //データの読み込み while((fscanf(fp1, "%d %lf %lf %lf %lf",dat[i].time,dat[i].voltage,dat[i].velocity,dat[i].pressure,dat[i].trigger)) !=EOF ){ i++; } fclose(fp1); return 0; } ***************************************************************************************** ********************test.datファイル********************************************** -2.64316 2.329595 0.697657 0.001373 -4.861982 -2.64314 2.325628 0.671961 0.001984 -4.744793 -2.64312 2.320745 0.640333 0.001678 -4.659953 -2.64310 2.319829 0.634400 0.002289 -4.707866 -2.64308 2.319219 0.630449 0.002289 -4.699321 -2.64306 2.317082 0.616607 0.002594 -4.532387 . . . . . *********************************************************************************** 環境はmac osです。 よろしくおねがい致します。

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

  • 大量のファイルの読み込みについて

    -512.txt~512.txtのファイルを順に読み込むプログラムを 作っています。 以下のコードのように作って動かしてみたのですが, -512から-3.txtまで入力してくれるのですが -2.txtの所でエラーが起きてしまいます. ファイルは確実に存在するのですが… fopenには大量のファイルを読み込むのは向いてないのでしょうか? 他に良い方法があれば教えて頂けると幸いです. 宜しくお願いします #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; int i=0; char s[256]; char filename[256]; //ファイル名編集 for(i=-512;i<512;i++){ fp=NULL; sprintf(filename,"distance\\routing_a\\%d.txt",i); printf("%sを読み込みます\n",filename); /* ここで、ファイルポインタを取得する */ if ((fp = fopen(filename, "r")) == NULL) { printf("%s file open error!!\n",filename); exit(EXIT_FAILURE); /* (3)エラーの場合は通常、異常終了する */ } } fclose(fp); /* (5)ファイルのクローズ */ return 0; } 環境 OS:windows XP 開発環境 visual studio 2008

  • C言語でファイルから読み込みができません。

    以下のプログラムを実行すると よくわからない値が返ってきます。 なぜでしょうか?教えてください。 #include <stdio.h> void main () { FILE *fp; double a, b; int count=0; fp = fopen("test.xls", "r"); while(1) { fscanf(fp, "%lf %lf\n", &a, &b); printf("%f, %f\n", a, b); count++; if(count==10)break; } fclose(fp); } test.xlsの中身は 1.0 2.0 3.0 4.0 5.0 6.0   :   :   :   : です。 よろしくお願いします。

  • 行ごとにファイル結合

    下記プログラムは、input1.txtの内容 0 1 2 3 4 5 6 7 8 をファイル入力して、行番号とファイルの内容を表示できるように作成したものです。 このプログラムにinput2.txt 9 10 11 12 13 14 とinput3.txt 15 16 17 をファイル入力し、行ごとに結合して 0 0 1 2 9 10 15 1 3 4 5 11 12 16 2 6 7 8 13 14 17 と表示できるようにしたいのですが、どのようにすればよいのでしょうか。ご存知の方、お手数ですが教えてください。よろしくお願いします。 #include <stdio.h> main(){ int i,j=0,N=0,n,a[100],m=0; FILE *fpi; if((fpi=fopen("input1.txt","r"))==NULL){ fprintf(stderr,"ファイルを開けません。\n"); exit(1); } while(fscanf(fpi,"%d",&a[N])!=EOF && N<100){ N++; } n=N/3; printf("%d",m); for(i=0;i<N;i++){ printf(" %2d",a[i]); j++; if(j==n && m<n-1){ printf("\n"); m++; printf("%d",m); j=0; } } fclose(fpi); }