Output表示,当文件fileIn的字正确有序地打印时,所有数组值都是“焦虑的”。我的问题可能在realloc()中?
ReadIn = malloc(sizeof(char) * 50);
while(fscanf(fileIn, "%s", ReadIn) != EOF){
wordlist = (char **)realloc( wordlist, (numwords + 1) * sizeof(char*));
printf("%s\n",ReadIn);
wordlist[numwords] = ReadIn;
numwords++;
}
for(i = 0; i < numwords; i++){
printf("%d %s\n", i , wordlist[i]);
}
输出:
This
is
a
journey
into
fear
and
anxiety.
0 anxiety.
1 anxiety.
2 anxiety.
3 anxiety.
4 anxiety.
5 anxiety.
6 anxiety.
7 anxiety.
发布于 2012-11-06 13:10:45
您让每个数组指针指向ReadIn
缓冲区,该缓冲区将包含读入的最后一个字符串。
您希望复制读入的每个字符串:
//change: wordlist[numwords] = ReadIn;
wordlist[numwords] = strdup(ReadIn);
当您使用完wordlist
数组时,您还应该注意释放每个字符串。
如果您的编译器运行时库没有非标准的、但通用的strdup()
函数,则很容易实现(或找到的公共领域版本)。
发布于 2012-11-06 13:16:44
wordlistnumwords = ReadIn;
在上面的代码行中,您只是简单地分配了“ReadIn”的地址,而不是字符串。因此,从包含在“ReadIn”中的文件中读取的最后一个字符串已被重复打印。
因此,您需要将读取的字符串复制到字符串数组中,
strcpy(wordlistnumword,ReadIn);
https://stackoverflow.com/questions/13244735
复制相似问题