- 締切済み
[初心者です]Cでのファイル読み込み
初めまして。質問させていただきます。 プログラミング初心者でコンパイラはgccです。 テキストファイルに書かれた10行の文字列をfgetsを使って読み込みたいので、 以下のようなプログラミングを組みました。 int i=0; char data[256]; char* dataname[256]; char filename[] = "datatext.txt"; FILE* fp = fopen( filename, "r" ); if(!fp)printf("error"); while( fgets(data, 256, fp) != NULL ) { dataname[i]=data; printf("%s",dataname[i]); i++; } fclose(fp); return 0; と、これはうまくいったのですが(初心者ゆえに)本当に上手くいってるのかと思い、 いろいろプログラミングを書き換えて確認していたら、 ・・・・・・・・・(上は同じ)・・・・・・・・・ while( fgets(data, 256, fp) != NULL ) { dataname[i]=data; i++; } fclose(fp); printf("%s",dataname[0]); printf("%s",dataname[1]); printf("%s",dataname[2]); ・・・ printf("%s",dataname[9]); return 0; とprintfの位置を変えると、表示が全て最後の行の値(dataname[9])になってしまいました・・・ これってメモリとかの関係?ですか?原因を知りたいです。 連休中ゆえ質問できる知人もおらず困っています。どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- SilverThaw
- ベストアンサー率32% (260/806)
関連するQ&A
- ポリプロピレンと天然ゴムシートを効果的に接着する方法についてご紹介します。
- エポキシはポリプロピレンとの接着には向いていないため、他の接着剤の使用を考えてみましょう。
- バケツ使用時に水に浸かる状態で使われるゴムシートには、適切な接着剤の選定が重要です。
補足
回答ありがとうございます! 簡単なプログラムです^^; お願いしますm(_ _)m ////////////////////////////////////// #include <stdio> int main() { int i=0; char data[256]; char* dataname[256]; char filename[] = "filename.txt"; FILE* fp = fopen( filename, "r" ); if(!fp)printf("error"); printf("while内では\n"); while( fgets(data, 256, fp) != NULL ) { dataname[i]=data; printf("%s",dataname[i]); i++; } fclose(fp); printf("\n確認のため表示してみると・・・\n"); printf("%s\n",dataname[0]); printf("%s\n",dataname[1]); printf("%s\n",dataname[2]); printf("%s\n",dataname[3]); printf("%s\n",dataname[4]); printf("%s\n",dataname[5]); return 0; } ////////////////////////////以上です 同一ディレクトリ下に6行の適当なテキストファイル ”filename.txt” を置いてくださいm(_ _)m 以下よければfilename.txtへのコピペに使ってください 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg