2012-02-02 17 views
0

テキストファイルから一連の名前を読み込み、配列に保存しようとしています。 インデックス(例:array [0])を使用して特定の名前を参照しようとするまで、すべてが正常に見えました。それは私にt1.txtを与えるべきt25.txtを私に与える。私は何を間違えたのですか?これはどのように機能しますか?配列内の文字列の保存について

は、ここで私が持っているものです。

#define MAX_STRING 25 

FILE *in; 

in = fopen("filenames.txt", "r"); 
if (!in) { 
    printf("Failed to open the file\n"); 
    exit(1); 
} 

char array[MAX_STRING]; 
// In my mind, I want it to look like this: 
// array[0] = t1.txt 
// array[1] = t2.txt 
int i; 

for (i = 0; i < MAX_STRING; i++) // Get 25 words 
{ 
    fscanf(in, "%s", array); 
    printf("filename = %s\n", array); 
    // I print it out to make sure it's getting what i want and it did 
} 

マイテキストファイル - filenames.txtは

t2.txtおかげで多くの

+0

配列[0] =あなたのコメントで 'T' ではなく、文字列全体で必要なもの

array[0] = 't' array[1] = 'x' 

。 – Mahesh

+0

私は参照してください。返信してくれてありがとう! – Dino55

答えて

4
char array[MAX_STRING]; 

t1.txtこの
ようなものです文字列の配列ではなく、文字の配列です。ループはすべての反復でこの配列を上書きします。

char array[N_STRINGS][MAX_LENGTH_OF_A_SINGLE_STRING]; 
+0

はい!それは働いた:)ありがとう! – Dino55

1

複数の文字列を1つの配列に保存せず、1つの文字列を複数回上書きしています。

は、Cの各文字列を配列として保存されているので、あなたは、2D-アレイのようなものを持っている必要が:次元1:文字列、寸法2:「アレイ」:

array[MAX_STRING][MAX_NAME_LEN] 

これは何ですかあなたはやるつもりです!

C-Stringsは連続したmemmoryの文字の配列として理解する必要があります。末尾に\ 0を付けると、 "string"の終わりを識別できます。あなたは文字列を扱っているときに配列を扱っています!

+0

ありがとうございます。ちゃんと覚えておきますよ。 – Dino55

1

あなたは、単に1つの文字列を定義するchar array[MAX_STRING];を定義

ので、あなたが char array[NUM_STRING][MAX_STRING]

+0

返信いただきありがとうございます:) – Dino55