读取文件行,将每行放入数组,然后打印

时间:2012-10-02 02:57:33

标签: c string io

我只是想出了如何用整数做这个,所以决定用字符串来解决它并且卡住了。

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

有人能指出我在正确的方向吗?谢谢。

1 个答案:

答案 0 :(得分:2)

此代码存在以下几个问题:

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

要解决第一个问题,请更改<=!=的{​​{1}},如下所示:

<

要解决第二个和第三个问题,请使用for(i = 0; i != 3; i++)

malloc

完成所分配的数据后,不要忘记释放字符串:

a[i] = malloc(21*sizeof(char));
fscanf(pFile, "%20s", a[i]);