我的程序读取文件中的单词,并将它们作为多个单词存储在动态分配的数组中。指针升级问题的原因是什么?
我的问题是while while循环打印数组时,它似乎指向正确的单词。在代码通过while循环后,当我打印所有的指示时,'冰'是最后一个词,我试图找出原因。
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
回答了这个一个至少5倍:'DataArray中[i] =的strdup(STR );' – cnicutar 2013-03-10 20:17:46
非常感谢你,是的,修复它:)如果可能的话可以告诉我哪里出了问题,或给出链接,你可能已经回答了这个问题..再次感谢。 – Nilayan 2013-03-10 20:24:23
你在阅读哪本书? – Sebivor 2013-03-10 20:31:09