我刚刚想出如何用整数来做到这一点,所以决定试一试字符串,结果卡住了。
这是我的文件“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;
}
有人能给我指出正确的方向吗?谢谢。
最佳答案
这段代码有几个问题:
- 您正在遍历数组
a
的四个元素,而数组只有三个元素。 - 您没有为正在使用
scanf
读取的字符串分配空间. - 读取字符串时不传递地址的地址。
要解决第一个问题,请更改 <=
对于 !=
或 <
,像这样:
for(i = 0; i != 3; i++)
要解决第二个和第三个问题,请使用 malloc
:
a[i] = malloc(21*sizeof(char));
fscanf(pFile, "%20s", a[i]);
完成分配的数据后,不要忘记释放字符串:
for(i = 0; i != 3; i++) {
free(a[i]);
}
关于c - 读取文件行,将每一行放入一个数组中,然后打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683974/