程序仅读取C中Matrix的第一行

时间:2018-11-04 16:38:19

标签: c file matrix

我正在尝试从文件中读取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);

但是,仅从文件中读取矩阵的第一行。当我尝试打印时,仅显示第一行,然后显示两个空行。

3 个答案:

答案 0 :(得分:1)

只需正确编写循环:

for(i = 0; i < 3; ++i){
    for(j = 0; j < 3; ++j){

在其他情况下,即使外部循环正常,但内部j循环也可以正常运行一次,但是由于j==3且未重置,因此在接下来的2个外部循环中都不会恢复迭代。

最后2个i循环为空,什么也不做。

(并且不必在i语句之外初始化jfor

答案 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]));
}