将文件数据分配给数组数组

时间:2015-07-10 14:44:19

标签: arrays file

我试图将包含7行的文本文件读入数组,如下所示:

包括

void main()

{     FILE * fp;

char *buffer[7];    //buffer is an array of 7 pointers to char

int i;

if ((fp = fopen("filetext", "r")) == NULL) {
        printf("There was an error opening file\n");
}

for (i=0; i<8; i++) {
    if (fgets(buffer[i], sizeof(char), fp)) != NULL) {;
        printf("%s\n", buffer[i]);
        i++
    }
}

fclose(fp);

}

**还有一些问题 为什么这不起作用? fgets,fgetc,fscanf和fread会自动进入下一行吗? 它们是否也会自动增加到下一个数组元素?

我现在已经尝试了3天了,我感到非常沮丧。

1 个答案:

答案 0 :(得分:0)

问题是你的缓冲区没有分配存储输入。

你需要准备一些空间来存放字符串。

更改声明

char *buffer[7];

分配7个指针,指向

的任何重要位置
char buffer[7][1024];

其中1024比您可能遇到的最长行长,这会分配7k字节来存储数据。

这样,buffer [i]将是一个可以写入1024个字节的地址。

fgets中重用此常量作为第二个参数。

有关详细信息,请参阅此文档: http://www.cplusplus.com/reference/cstdio/fgets/

阅读Kernighan&amp; Ritchie理解C字符串http://www.iups.org/media/meeting_minutes/C.pdf ,或者只是从文档中的示例中复制,就像我指出的那样。并尝试阅读函数'fgets'的手册,第一段中的其他问题的答案就在那里。