【发布时间】:2021-01-28 20:09:15
【问题描述】:
我查看了措辞相似的问题,但没有解决我的问题。 我的目标是从 C 中的文本文件中读取矩阵,然后对其执行操作。目前,我正在编写一个函数来读取矩阵。文本文件始终具有格式
# Comment
# Comment
matrix NROWS NCOLS
DATA DATA DATA
DATA DATA DATA etc
end
所以对于 3x4 矩阵:
# Comment
# Comment
matrix 3 4
7.16669652013 8.21223145665 8.78374366033 5.87828106521
7.32124040244 4.30552353817 1.67905652974 3.91825198378
7.28717047595 3.83999063812 5.53693148121 6.03363152874
end
我目前的功能是:
void read_matrix(char *filename, int rows, int cols) {
char *status;
char line[MAX_FILE_LINE_SIZE];
int line_no = 1;
char *data_line;
double matrix[rows][cols];
printf("Reading Matrix...\n");
FILE *inf = fopen(filename, "r");
if (!inf) {
fprintf(stderr, "Error, could not open file '%s'\n", filename);
exit(1);
}
status = fgets(line, sizeof(line), inf);
while (status) {
status = fgets(line, sizeof(line), inf);
///printf("%i: %s", line_no, line);
if (line_no >= 3 && line_no < 3+rows) {
int i=0;
data_line = strtok(line, " \t");
while (data_line != NULL) {
matrix[line_no-3][i] = atof(data_line);
data_line = strtok(NULL, " \t");
i++;
}
}
line_no ++;
}
printf("PRINT MATRIX\n");
for (int z=0; z<rows; z++) {
for (int j=0; j<cols; j++) {
printf("matrix[%i][%i] = %f\n",z, j, matrix[z][j]);
}
}
fclose(inf);
}
效果很好,所以在函数结束时,我将所有数据保存到二维数组matrix[rows][cols] 中。
然而,我完全不知道如何在 main 中使用这个函数,因为在函数之外,变量不再在范围内。任何帮助将不胜感激。
【问题讨论】:
标签: c function multidimensional-array