【发布时间】:2017-02-26 16:04:30
【问题描述】:
我读取了一个文本文件并将内容存储在一个名为 H 的二维数组中,我需要以某种方式将此二维数组返回给 main,以便我可以在那里使用它并将其传递给其他函数。我不确定如何让返回工作,也许使用指针。我将 readTxtFile 函数变成了一个 void 函数,以测试文件读取是否正常(确实如此),但我无法对函数外部的 2D 数组执行任何操作。我有两个函数 getRows() 和 getCols() 我没有在这里展示,但如果需要我可以。
到目前为止,这是我的代码:
int main(void){
// int *H;
// H = readTxtFile("H.txt");
readTxtFile("H.txt");
return 0;
}
void readTxtFile(char *filename){
int rows, cols;
FILE *fp = fopen(filename, "r");
if (!fp){
perror("can't open H.txt\n");
//return EXIT_FAILURE;
}
rows = getRows(fp);
cols = getCols(fp);
int (*H)[cols] = malloc(sizeof(int[rows][cols]));
if(!H){
perror("fail malloc\n");
exit(EXIT_FAILURE);
}
for(int r = 0; r < rows; ++r){
for(int c = 0; c < cols; ++c){
if(EOF==fscanf(fp, "%d", &H[r][c])){
fprintf(stderr, "The data is insufficient.\n");
free(H);
exit(EXIT_FAILURE);
}
}
}
fclose(fp);
// printH(rows,cols,H);
// return H;
}
这是文本文件的样子:
1 1 0 1 0 0
0 1 1 0 1 0
1 0 0 0 1 1
0 0 1 1 0 1
2 2 2 2 2 2
任何帮助将不胜感激
【问题讨论】:
标签: c arrays multidimensional-array return