输出表示,当文件 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.
最佳答案
使每个数组指针指向 ReadIn
缓冲区,其中将包含最后读入的字符串。
您想要复制读入的每个字符串:
//change: wordlist[numwords] = ReadIn;
wordlist[numwords] = strdup(ReadIn);
使用完 wordlist
数组后,您还应该注意释放每个字符串。
如果您的编译器的运行时库没有非标准但常见的 strdup()
函数,则很容易实现(或找到其公共(public)域版本)。
关于c - fscanf 变量设置不正确。可能是 realloc(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244735/