从文件中读取3x3矩阵,然后在C中显示

时间:2013-11-01 23:56:54

标签: c file-io matrix printf scanf

我想打印矩阵,但我不知道如何。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char* argv[])
{
FILE       *input;
int        i, j;  
float      fullmatrix[3][3];
const char inp_fn[]="matrix.dat";

/*Open File*/
input = fopen(inp_fn, "r");

if( (input != (FILE*) NULL) )
{
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            fullmatrix[i][j] = input;
        }
        fscanf(input, "%f");

    }
    fclose(input);
    printf("%f %f %f\n %f %f %f\n %f %f %f\n", &matrix[i][j]);
}
else
    printf("Could not open file!\n");

return(0);
}

2 个答案:

答案 0 :(得分:1)

for(i=0; i<3; i++)
{
    for(j=0; j<3; j++)
    {
        fullmatrix[i][j] = input;
    }
    fscanf(input, "%f");

}

应该是:

for(i=0; i<3; i++) {
    for(j=0; j<3; j++) {
        fscanf(input, "%f", &fullmatrix[i][j]);
    }
}

并且这一行也不符合你的想法:

printf("%f %f %f\n %f %f %f\n %f %f %f\n", &matrix[i][j]);

您需要再次使用循环逐个打印它:

for(i=0; i<3; i++) {
    for(j=0; j<3; j++) {
        printf("%f ", fullmatrix[i][j]);
    }
    printf("\n");
}

答案 1 :(得分:0)

用于阅读文件并将其放入矩阵并一次性打印

for(i=0; i<3; i++) {
    for(j=0; j<3; j++) {
        fscanf(input, "%f", &fullmatrix[i][j]); // If you just want to print the matrix separately .. remove this line

        printf("%f ",matrix[i][j]);
    }
    printf("\n");
}