1

私は C を学ぼうとしていますが、ファイルから配列に文字列を読み込む方法がわかりません。文字列の配列として文字の 2D 配列があり、malloc を使用してそれらを読み取ろうとしましたが、SegFault が発生し続けます。コードを修正する方法に関するヒントはありますか?

#include <stdio.h>
#define MAX_WORDS 10
#define MAX_WORD_SIZE 20

unsigned int getLine(char s[], unsigned int uint, FILE *stream);

int main( void ){

 FILE *infile1;
 unsigned int i = 0;
 unsigned int j = 0;
 unsigned int index;
 char c;

 char wordList[ MAX_WORDS+1 ][ MAX_WORD_SIZE + 1];

 infile1 = fopen("myFile.txt", "r");


 if (!(infile1 == NULL))
printf("fopen1 was successful!\n");


 while( (c = getc(infile1)) != EOF){
  while ((c = getc(infile1)) != ' '){
    wordList[i] = (char *)malloc(sizeof(char) );
        wordList[i][j] = getc(infile1);
        j++;
  }
  j = 0;  
  i++;
}


printf("\nThe words:\n");
for (index = 0; index < i; ++index){
printf("%s\n", wordList[index]);
}
4

2 に答える 2

0

これをどのようにコンパイルしていますか。コンパイラは、割り当てに関するエラーを表示する必要があります。

wordList[i] = (char *)malloc(sizeof(char) );

配列wordlistの型ではありませんchar *

また、malloc (おそらく stdlib.h) のインクルードが欠落しており、malloc からのリターンをキャストすべきではありません。

于 2013-05-01T02:43:45.117 に答える