【发布时间】:2014-11-22 02:44:44
【问题描述】:
void read_matrices(int **A, int **B, int **C, int *m, int *n, int *p, char *file)
我想从一个如下所示的外部文件中读取两个矩阵:
3
2
4
1 2
3 4
5 6
7 8 9 10
11 12 13 14
其中第一行的数字是矩阵 A 的行数,数字 2 是矩阵 A 的列数和矩阵 B 的行数,第三个数字是矩阵 B 的列数。我试过这个来获取 m、n 和 p,但得到一个 seg 错误
FILE * fp = fopen(file, "r");
char a, b, d;
char c = getc(fp);
int i = 0;
while (c != EOF) {
if (i == 0) {
a = c;
i++;
}
else if (i == 1) {
b = c;
i++;
}
else if (i == 2) {
d = c;
i++;
}
else
break;
}
fclose(fp);
【问题讨论】:
-
这段代码在哪里尝试获取
m、n和p? -
对于初学者来说,您只尝试获取一个字符。 while 循环内没有 getc 或 fgetc ......可能想将 while 语句重写为 while ( (c = fgetc(fp)) != EOF ) 之类的东西。至于段错误,我假设它发生在这段代码的某个地方,或者是你没有发布的部分?您是否尝试过运行 gdb 并查看失败的地方?
-
如果你只读取两个数组,为什么函数需要三个
int **参数?您打算为阵列使用什么布局?它们将是您适当索引的二维数组还是一维数组? (这很重要,因为如果它们是二维数组,你很可能需要int ***参数。) -
传递未使用的参数应该已被编译器捕获。您是否将必要的标志传递给编译器以显示所有警告等?