【问题标题】:Why is scanf and printf value different?为什么 scanf 和 printf 的值不同?
【发布时间】:2020-12-21 15:13:41
【问题描述】:

在我的程序中:

int row,col,srow,scol,erow,ecol;
while(scanf("%d %d %d %d %d %d",&row,&col,&srow,&scol,&erow,&ecol)!=EOF){
    int m[row][col];
    ...
}

在while循环中我使用scanf输入值,值为4 5 6,输入有效。

    for(int x=0;x<row;x++){
        for(int y=0;y<col;y++){
            scanf("%d",&m[row][col]);
        }
    }

但是当我尝试输出值时,值变了,变成了6422232 6422228 6422224,我的printf代码是这样的:

for(int a=srow;a<=erow;a++){
        for(int b=scol;b<ecol;b++){
            printf("%d ",m[a][b]);
        }
        printf("%d\n",m[a][ecol]);
    }

为什么会出现问题?

【问题讨论】:

  • 总是一个错误:不测试 scanf() 的返回值。
  • 在第二个 sn-p 迭代变量是 x 和 y,但您正在扫描到 row[col]

标签: arrays c for-loop


【解决方案1】:

您没有正确输入。应该是:

for(int x=0;x<row;x++){
     for(int y=0;y<col;y++){
         scanf("%d",&m[x][y]);
     }
}

您的输出数字是没有从输入循环中获取值的垃圾值。

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 2017-06-02
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多