如何在c中写矩阵?

问题描述 投票:0回答:2

我有一个5到4的矩阵。我正在输入20个数字。我想将这些数字条目写入文本文件,但数字未写入。这是我的代码;

int main()
{  
    int hw[5][4];
    int i, j;  
    FILE *fp = fopen("input.txt", "w");   

    for(i=0; i<5; i++) {
        for(j=0;j<4;j++) {
            printf("Enter value for HW[%d][%d]:", i, j);
            scanf("%d", &hw[i][j]);

            fprintf(fp,"%d\n",&hw[i][j]);

            if(hw[i][j]>=30)
            {
                printf("helloo");
            }     
        }
    }   
   fclose(fp);

    printf("HOMEWORKS:\n");
    for(i=0; i<5; i++) {
        for(j=0;j<4;j++) {
            printf("%d ", hw[i][j]);
            if(j==3){
                printf("\n");
            }
        }
    }

    return 0;
}
c matrix printf scanf
2个回答
0
投票

错误是在fprintf调用中。

您需要在fprintf调用中的hw[i][j]之前删除“&”(如printf()函数中一样)。结果代码将是这样:

int main()
{  
    int hw[5][4];
    int i, j;  
    FILE *fp = fopen("input.txt", "w");   

    for(i=0; i<5; i++) {
        for(j=0;j<4;j++) {
            printf("Enter value for HW[%d][%d]:", i, j);
            scanf("%d", &hw[i][j]);

            fprintf(fp,"%d\n",hw[i][j]);

            if(hw[i][j]>=30)
            {
                printf("helloo");
            }     
        }
    }   
   fclose(fp);

    printf("HOMEWORKS:\n");
    for(i=0; i<5; i++) {
        for(j=0;j<4;j++) {
            printf("%d ", hw[i][j]);
            if(j==3){
                printf("\n");
            }
        }
    }

    return 0;
}

我还附上fprintf函数的有用指南:

fprintf() - tutorialpoint.com


0
投票

正如usr所说,您需要从&中删除fprintf(fp,"%d\n",&hw[i][j]);

这是因为&将返回hw[i][j]的存储位置,而不是它保存的值。

您可能想看看pointers

© www.soinside.com 2019 - 2024. All rights reserved.