使用fscanf()将整数复制到数组中.在C.

use*_*701 3 c arrays scanf

我有一个包含10行整数的文件.

我想将这些整数复制到几个数组中,名为line1,line2,line3等,其中数字来自相应数组中的每一行.

我目前正在使用

fscanf(items, "%d, %d, %d, %d, %d, %d, %d, %d, %d, %d", &line1[0], &line1[1], &line1[2], &line1[3], &line1[4], &line1[5], &line1[6], &line1[7], &line1[8], &line1[9]);
Run Code Online (Sandbox Code Playgroud)

将前10个int分配给名为line1的数组.

这是一个非常草率的方法,并没有解决将其余值分配给其他数组的另一个问题.

关于如何更整齐地为数组分配10个值的任何建议,以及如何将每一行分配给不同的数组将不胜感激!

谢谢

Kla*_*äck 5

使用多维数组和嵌套循环:

#DEFINE COLS 10
#DEFINE ROWS 10

int i, j;
int line[ROWS][COLS];

for (i = 0; i < ROWS; ++i) {
  for (j = 0; i < COLS - 1; ++j) {
    fscanf(items, "%d, ", &line[i][j]);
  }
  fscanf(items, "%d", &line[i][COLS - 1]);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

上面的代码使用与问题(逗号分隔值)相同的格式字符串.如果空格分隔值正常,则可以使用直接循环而不使用fscanf每行上最后一项的单独循环:

#DEFINE COLS 10
#DEFINE ROWS 10

int i, j;
int line[ROWS][COLS];

for (i = 0; i < ROWS; ++i) {
  for (j = 0; i < COLS; ++j) {
    fscanf(items, "%d", &line[i][j]);
  }
}
Run Code Online (Sandbox Code Playgroud)

边注:

如果要编写检测输入文件中的错误的代码,则需要检查返回值fscanf.可能在学校项目中不需要,但在工业强度代码中需要.