2012-04-22 17 views
-1

C++を使用して、fgetsを使用してテキストファイルをchar配列に読み込みます。この配列の各要素のインデックスを取得します。 line [0] = 0.54 3.25 1.27 9.85とすると、line [0]のすべての要素を別の配列、つまりreadElement [0] = 0.54に戻したいと考えています。 マイTEXT.TXTファイルは、この形式になっています。0.54 3.25 1.27 9.85 1.23 4.75 2.91 3.23 ここで私が書いたコードは次のとおりです。配列内のすべての要素のインデックスを取得する

char line[200]; /* declare a char array */ 
char* readElement []; 

read = fopen("text.txt", "r"); 
while (fgets(line,200,read)!=NULL){ /* reads one line at a time*/ 
printf ("%s print line\n",line[0]); // this generates an error 

readElement [n]= strtok(line, " "); // Splits spaces between words in line 
    while (readElement [1] != NULL) 
    { 
printf ("%s\n", readElement [1]); // this print the entire line not only element 1 

    readElement [1] = strtok (NULL, " "); 
    } 
n++; 
} 

おかげ

+0

別のアプローチは、[コンテナあたりどのようにベクターに標準入出力から入力された文字列を入れて、一つの単語](http://stackoverflow.com/questions/8062545/c-how-to-put-an-入力文字列からstdioにベクトルの1つの単語 - コンテナあたり) –

+0

あなたはあなたのコーディングはC + +で、私はすべてが表示されますCです。 それはあなたのテキストファイルのように聞こえるは、各行に複数の値を。 2次元配列の使用を検討しましたか? –

答えて

0

readElementはmisdeclared見えます。文字列の先頭へのポインタとして宣言してください:

char* readElement = NULL; 

fopenからの戻り値もチェックしていません。それが最も可能性の高い問題です。したがって、 "line"は、ファイルが実際に開かれなかった場合にprintfに渡すときにはガベージです。

そして、実際に行の各要素を配列に格納したい場合は、その配列にメモリを割り当てる必要があります。

また、変数に「読み取り」という名前を付けないでください。 "read"は、下位レベル関数の名前でもあります。

const size_t LINE_SIZE = 200; 
char line[LINE_SIZE]; 
char* readElement = NULL; 
FILE* filestream = NULL; 

filestream = fopen("text.txt", "r"); 
if (filestream != NULL) 
{ 
    while (fgets(line,LINE_SIZE,filestream) != NULL) 
    { 
     printf ("%s print line\n", line); 

     readElement = strtok(line, " "); 
     while (readElement != NULL) 
     { 
      printf ("%s\n", readElement); 
      readElement = strtok (NULL, " ");  
     } 
     } 
    } 
    fclose(filestream); 
} 
+0

すばらしい返信をしてくれてありがとうselbieですが、テキストファイルの各行を配列に格納し、後でプログラムの各要素を使用したいと考えています。つまり、この行行[0] = 0.54 3.25 1.27 9.85を読み込み、readElement [0] = 0.54を使用してこの配列の1つの要素を抽出します。これを達成する方法は?歓声 – user999

+0

まず、行内にいくつの要素(数)があるのか​​を数え、それぞれを保持するのに適切な大きさの配列を割り当てます。配列の各要素は、各文字列を保持するのに適切な大きさにする必要があります。 – selbie

関連する問題