私のプログラムはファイルから単語を読み取り、動的に割り当てられた配列に単語の数として格納します。
私の問題は、配列を出力するときにwhileループにいるときに、正しい単語を指しているように見えることです。コードがwhileループを通過した後、すべてのインデックスを出力すると、「ice」が最後の単語になり、その理由を調べようとしています。
FILE *fileptr=fopen("file.txt","r");
char** DataArray;
int num_of_words=0;
char str[10];
while(fscanf(fileptr,"%s",&str)!=-1)
{
num_of_words++;
}
DataArray=(char**)malloc(num_of_words*sizeof(char*));
rewind(fileptr);
int i=0;
while(fscanf(fileptr,"%s",&str)!=-1)
{
printf("%s",str);
int len=strlen(str);
printf("\t%d",len);
DataArray[i]=(char*)malloc(len*sizeof(char));
DataArray[i]=str;
printf("\t%s\n",DataArray[i]);
i++;
}
printf("\n");
//printf("%s\n",*(DataArray+2));
printf("%s\n",DataArray[0]);
printf("%s\n",DataArray[1]);
printf("%s\n",DataArray[2]);
fclose(fileptr);
出力:
apple 5 apple
mango 5 mango
ice 3 ice
ice
ice
ice