アプリ版:「スタンプのみでお礼する」機能のリリースについて

ファイル関数を使って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 好きな物 キャットフード

A 回答 (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;
}
++++++++++++++++++++++
    • good
    • 1
この回答へのお礼

memsetを使うという事が頭になかったみたいです。
これで思った通りの事ができます。
ありがとうございました。

お礼日時:2009/03/23 21:48

fgetcで1文字(1バイト)づつ取得して、data配列に格納してますよ。


文字列のバイト数と配列のサイズが合わないし、int型じゃなくchar型の方が効率的だし、なにをしたいんでしょうか?
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
確かにchar型の方がint型より効率的ですね・・。
勉強不足でした。
再度その点をもう一度考えています。

お礼日時:2009/03/23 21:52

>001 100 猫A 好きな物 ねこまんま


>002 200 猫B 好きな物 キャットフード

この入力データを、

>int data[10];

この出力領域にどんな風に格納したいのでしょうか?
data[0]~data[9]がどうなることをお望みであるか、教えてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
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]=キャットフード
もう一度配列から勉強しなおして見ます。

お礼日時:2009/03/23 21:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!