【问题标题】:Scan 2D array from stdin从标准输入扫描二维数组
【发布时间】:2021-09-09 14:06:51
【问题描述】:

正如标题所说,我只想将此输入粘贴到程序中,然后每个数字都应该存储在二维数组中。

输入:

172549683
645873219
389261745
496327851
813456972
257198436
964715328
731682594
528934167

我的尝试:

#include <stdio.h>

int main() {
    int array_2d[9][9];

    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            scanf_s(" %d", &array_2d[i][j]);
        }
    }

    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            printf("%d", array_2d[i][j]);
        }

        printf("\n");
    }
}

【问题讨论】:

  • 您可能在 scanf 调用中需要&amp;array_2d[i][j]
  • 是的,我忘记写了,但还是不行
  • 您需要" %1d" 来限制读取的位数,因为您的号码没有分开。

标签: c multidimensional-array scanf


【解决方案1】:

正如 Marek 所说,您希望将 scanf 更改为 scanf_s("%1d", &amp;array_2d[i][j]);,假设您收到没有空格的正确输入并且知道 i 和 j 的输入大小。

【讨论】:

    【解决方案2】:

    此示例显示如何从一行中读取整数,然后将其拆分为将保存到 2D 矩阵中的数字。

    #include <stdio.h>
    
    int main() {
        int array_2d[9][9];
        int value = 0;
    
        for (int i = 0; i < 9; i++) {
            scanf("%d", &value);
            int j = 8;
    
            while (value != 0) {
                array_2d[i][j--] = value % 10;
                value = value / 10;
            }
        }
    
        printf("\n\n");
    
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                printf("[%d]", array_2d[i][j]);
            }
    
            printf("\n");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多