【发布时间】:2015-06-20 16:17:25
【问题描述】:
我正在尝试从包含以空格分隔的单词的文件中读取,这些单词是在循环中读取的。它们在循环中被正确读取,并且可以这样打印,但是一旦循环结束,我只能打印每个元素的第一个字符。代码如下:
char **storeWords(char **words){
char* fileName = "words.txt";
FILE* fp = fopen(fileName, "r");
int i;
for (i = 0; i < 2; i++){
int j;
for (j = 0; j < 20; j++){
fscanf(fp, "%s", &words[i][j]);
printf("%s", &words[i][j]); //prints correctly
}
}
printf("%s", &words[0][0]); //prints first character of selected element
fclose(fp);
return **words;
}
int main(){
char **words = (char**)malloc(6 * sizeof(char*));
for (int i = 0; i < 6; i++){
words[i] = (char*)malloc(20 * sizeof(char));
}
storeWords(words);
system("pause");
return 0;
}
我不明白为什么会发生这种情况,如果可以解释一下,将不胜感激。谢谢。
【问题讨论】:
-
fscanf(fp, "%s", &words[i][j]);覆盖每个班次。 -
应该改用什么? @BLUEPIXY
-
试试
for (i = 0; i < 2; i++){ fscanf(fp, "%19s", words[i]); printf("%s\n", words[i]); } -
return **words;应该是return words;。你的编译器没有抱怨这一行吗?
标签: c memory-management multidimensional-array