0
ファイルから文字列を読み込み、文字列配列にコピーしようとしています。 セグメンテーションフォールトを取得する前に、ファイルの最初の文字列だけを正しく読み込むことができない理由を理解できません。私は、ファイル内の各文字列が50文字までであることを知っています。ファイルから文字列を読み込んで配列にコピーする -
...
int i = 0;
char s[50];
int N=0;
FILE *fp;
//Figures out how many strings are stored in the file
while(fgets(s, 50, fp)!=NULL){N++}
rewind(fp);
char *strings[N]; //This is the array where I want to store strings
for(i=0;i<N;i++){
fgets(s, 50, fp);
strcpy(strings[i], s);
printf("%s", s);
}
なぜ文字列を配列に正常に保存できないのですか?
初期化されていないポインタでは 'strcpy'を使うことはできません。' strdup'を使う:strings [i] = strdup ; ' –
ヒント:' char * strings [N] 'はN個のポインタの配列ですが、どれも初期化されていません。各ポインタは、未定義のメモリ位置を指し示します。 –
@MichaelWalz:ありがとう!だから私はstrcpyを使用することができますが、私は各 'strings [i]'ポインタを初期化する必要があります。 fgets()の後に、 'strings [i] =(char *)malloc(50 * sizeof(char));'のようなものを使うべきだと思いますか? – davideAlbertini