2

我刚刚想出了如何使用整数来做到这一点,所以决定尝试使用字符串并卡住了。

这是我的文件“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;
}

有人可以在这里指出我正确的方向吗?谢谢你。

4

1 回答 1

2

这段代码有几个问题:

  • 您正在遍历数组的四个元素a,而数组只有三个元素。
  • 您没有为正在阅读的字符串分配空间scanf
  • 读取字符串时不传递地址的地址。

要解决第一个问题,请更改<=!=or <,如下所示:

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]);
}
于 2012-10-02T03:05:40.637 回答