我只是想出了如何用整数做这个,所以决定用字符串来解决它并且卡住了。
以下是我的文件“kw”:
keyword0
keyword1
keyword2
keyword3
使用当前代码,我得到“错误:格式'%s'需要类型'char *'的参数,但参数3的类型为'char **'
#include <stdio.h>
int main () {
FILE *pFile;
pFile = fopen("kw", "r");
if (pFile != NULL) {
char *a[3];
int i;
for(i = 0; i <= 3; i++) {
fscanf(pFile, "%s", &a[i]);
printf("%s\n", a[i]);
}
}
return 0;
}
有人能指出我在正确的方向吗?谢谢。
答案 0 :(得分:2)
此代码存在以下几个问题:
a
的四个元素,而数组只有三个元素。scanf
阅读的字符串分配空间。要解决第一个问题,请更改<=
或!=
的{{1}},如下所示:
<
要解决第二个和第三个问题,请使用for(i = 0; i != 3; i++)
:
malloc
完成所分配的数据后,不要忘记释放字符串:
a[i] = malloc(21*sizeof(char));
fscanf(pFile, "%20s", a[i]);