【发布时间】:2016-05-05 18:55:23
【问题描述】:
我想逐行读取一个简单的文件并将内容保存到一个数组中。如果我编译源代码,我会收到此错误:
test.C: In function ‘char* read_file(int, int, const char*)’:
test.C:14:11: error: cannot convert ‘char (*)[1024]’ to ‘char*’ in return
return words;
^
这是什么意思?为什么我不能返回二维数组的指针?这是源代码。
#include <stdio.h>
#include <string.h>
char * read_file(int buf, int size, const char *fname){
char words[size][buf];
FILE *fptr = NULL;
int idx = 0;
fptr = fopen(fname, "r");
while(fgets(words[idx], buf, fptr)) {
words[idx][strlen(words[idx]) - 1] = '\0';
idx++;
}
return words;
}
int main(void) {
char * words;
words = read_file(1024, 100, "text.txt");
int i;
for(i = 0; i < 100; ++i)
printf("%s\n", words[i]);
}
【问题讨论】:
-
'char words[size][buf];' - 自动存储,>GONE
-
无论转换错误如何,您都不想做这似乎正在尝试的事情。 Lashane 评论中的链接很重要。