- ベストアンサー
txtファイルの文字を配列に格納
ファイル関数を使ってoutput.txt(txtファイル)の文字を配列に格納するプログラムを作っているのですが、配列に文字を入れられない状態です。 ※参考になるページやアドバイスがあれば宜しくお願い致します。 ■プログラム #include <stdio.h> void main(){ int i; int data[10]; FILE *fp; fp = fopen("output.txt","r"); if(fp == NULL){ printf("ファイルが見つかりません。"); }else{ for(i=0;fp != EOF;i++){ data[i] = fgetc( fp ); } } } ■output.txt 001 100 猫A 好きな物 ねこまんま 002 200 猫B 好きな物 キャットフード
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これで、やりたいこと、できませんかね? ++++++++++++++++++++++ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ int i = 0, j = 0; char temp, data[10][100]; FILE *fp; fp = fopen("output.txt","r"); /* 初期化 */ memset(data, 0, sizeof(data)); if(fp == NULL){ printf("Cannot find file"); }else{ while((temp = fgetc(fp)) != EOF){ if (temp == ' ' || temp == '\n') { data[i][j] = '\n'; i++; j = 0; } else { data[i][j] = temp; j++; } } for (i = 0; i < 10; i++) { printf("[%d] Output : %s \n", i, data[i]); } fclose(fp); } return 0; } ++++++++++++++++++++++
その他の回答 (2)
- zwi
- ベストアンサー率56% (730/1282)
fgetcで1文字(1バイト)づつ取得して、data配列に格納してますよ。 文字列のバイト数と配列のサイズが合わないし、int型じゃなくchar型の方が効率的だし、なにをしたいんでしょうか?
お礼
回答ありがとうございます。 確かにchar型の方がint型より効率的ですね・・。 勉強不足でした。 再度その点をもう一度考えています。
- asuncion
- ベストアンサー率33% (2127/6289)
>001 100 猫A 好きな物 ねこまんま >002 200 猫B 好きな物 キャットフード この入力データを、 >int data[10]; この出力領域にどんな風に格納したいのでしょうか? data[0]~data[9]がどうなることをお望みであるか、教えてください。
お礼
回答ありがとうございます。 1つ1つの配列に以下のように入れたかったです。 data[0]=001 data[1]=100 data[2]=猫A data[3]=好きな物 data[4]=ねこまんま data[5]=002 data[6]=200 data[7]=猫B data[8]=好きな物 data[9]=キャットフード もう一度配列から勉強しなおして見ます。
お礼
memsetを使うという事が頭になかったみたいです。 これで思った通りの事ができます。 ありがとうございました。