【问题标题】:How would I create a 2D array of strings of numbers in C?如何在 C 中创建一个二维数字字符串数组?
【发布时间】:2022-01-04 07:09:27
【问题描述】:

我正在做一个作业,而且我对 C 语言比较陌生。如果给我一个这样的输入文件:

25 08 10 15 10 
10 13 50 60 70 
10 10 15 00 90
00 05 07 80 12
10 05 60 70 88

我将如何正确地将这些存储在一个数组中,以便它像二维数组一样显示,或者这在我使用 C 的方式中是不可能的。

我下面的代码是将输入文件转换为二维数组的函数。假设我已经有其他功能错误检查文件是否格式正确。

void createMatrix(FILE *fp) {
    int row = 5;
    int col = 5;
    char matrix[row][col];
    int i, j;
    char num[25];

    rewind(fp);
    for (i=0; i<row; i++) {
        for(j=0; j<col; j++) {
            fscanf(fp, "%s", name);
            bingoCard[i][j] = name;
        }
    }
}

如果它是我要查找的整数,这将起作用,但我需要保留数字前面的 0,例如 0008。稍后我还需要附加这些数字,这就是为什么我需要以字符串格式将它们放入数组中。谁能指出我正确的方向?

然后我需要在像这样对其进行更新时打印输入文件

25X 08 10 15 10 
10  13 50 60 70 
10  10 15 00 90
00  05 07 80 12
10  05 60 70 88

【问题讨论】:

  • 查看printf 的格式说明符。 %02d 之类的东西可以在数字前加上 0。请记住,您在内存中的存储方式和显示方式不必相同。
  • 输入的是原始数据还是文本?
  • @Lundin 这是文本数据。

标签: arrays c


【解决方案1】:

使矩阵中的每个元素成为一个字符串(一个数组)。例如

char matrix[row][col][10];

然后直接读入那个字符串:

fscanf(fp, "%9s", matrix[i][j]);

但您也可以将矩阵创建为 整数 矩阵,然后使用printf 格式来包含前导零:

int matrix[row][col];
// ...
fscanf(fp, "%d", &matrix[i][j]);
// ...
printf("%02d", matrix[i][j]);  // Prints leading zero if value is only a single digit

【讨论】:

    猜你喜欢
    • 2022-11-23
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2010-09-16
    • 2019-01-21
    相关资源
    最近更新 更多