我正在尝试从文件中读取3x3矩阵。该文件包含的数据如下所示。
5 65 3
3 11 15
22 8 3
到目前为止,我有以下代码,
int data[3][3];
int i = 0;
int j = 0;
FILE *fptr = fopen("data.txt", "r");
for(; i < 3; ++i){
fscanf(fptr, "%d %d %d", &(data[i][0]), &(data[i][1]), &(data[i][2]));
}
i = 0;
for(; i < 3; ++i){
for(; j < 3; ++j){
printf("%d ", data[i][j]);
}
printf("\n");
}
fclose(fptr);
但是,仅从文件中读取矩阵的第一行。当我尝试打印时,仅显示第一行,然后显示两个空行。
答案 0 :(得分:1)
只需正确编写循环:
for(i = 0; i < 3; ++i){
for(j = 0; j < 3; ++j){
在其他情况下,即使外部循环正常,但内部j
循环也可以正常运行一次,但是由于j==3
且未重置,因此在接下来的2个外部循环中都不会恢复迭代。
最后2个i
循环为空,什么也不做。
(并且不必在i
语句之外初始化j
和for
)
答案 1 :(得分:1)
请尝试使用以下给定的行读取文件的第一行,然后将它们分开存储数字。
fscanf(fptr,"%[^\n]", c);
请参阅此链接以获取更多详细信息
答案 2 :(得分:1)
我认为您可以轻松解决此问题。修改这些行并添加换行符。
for(; i < 3; ++i){
fscanf(fptr, "%d %d %d\n", &(data[i][0]), &(data[i][1]), &(data[i][2]));
}