我试图将包含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天了,我感到非常沮丧。
答案 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'的手册,第一段中的其他问题的答案就在那里。