C逐行创建多维数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C逐行创建多维数组相关的知识,希望对你有一定的参考价值。

我正在尝试获取下面的输入,并将其存储在多维数组中,并将最后一个数字存储在变量中。

  • 每行之后,将给出' n'字符。

  • 它将是字符数组。

  • 尺寸为[10] [10]。

输入:

1112231113
2112231113
1112231113
3312231113
1112231113
1112231113
3312231113
3312231113
3312231113
3312231113
1

我的代码:

int main(void) {
  char array[10][10];
  char in;

  scanf("%c", &in);
  while(in != '
') {
    for(int i = 0; i < 10;i++){
      for(int j = 0;j < 10;j++){
        array[i][j] = in;

      }
    }
    scanf("%c", &in);
  }

  for(int i = 0; i < 10;i++){
      for(int j = 0;j < 10;j++){
        printf("%c", array[i][j]);
      }
      printf("
");
  }

  return 0;


}
答案

在这种情况下,您应该使用Dimension is [10][12]代替Dimension is [10][10],因为每行包含10位数字,因此,如果要将数字存储在字符串行中,则应该为null字符花费1个字节的内存()和 字符的一个字节。

要逐行获取,可以使用fgetsgetline功能。

对于最后一个值,您可以使用sscanffscanfatoi等。>

适合您的小例子:

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

int main()
{
    char data[10][12];
    char line[12];
    FILE *fp = fopen("input.txt", "r");
    int i = 0;
    int var;
    while (fgets(line, sizeof(line), fp)) {
        if(strlen(line) > 1) {
            strcpy(data[i], line);
        } else if(strlen(line) == 2) { // for the value from `0` to `9`.
            var = atoi(line);
        }
        i++;
    }

    printf("var = %d
", var);

    for(int k = 0; k < 10; k++) {
        printf("%s", data[k]);
    }

    return 0;
}

如果您确切知道文件中的行数,也可以使用for循环。

for(int i = 0; i < 10; i++) {
   fgets(data[i], 12, fp);
}

以上是关于C逐行创建多维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何理解JS多维数组

在c中的结构中初始化多维数组

C 语言数组 ( 多维数组本质 | 步长角度 理解 多维数组本质 )

C# 中 CSV 文件的多维数组

《C专家编程》数组和指针并不同--多维数组

使用 for 循环创建多维数组