我有一个包含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]);
将前10个整数分配给名为line1的数组。
这是一种非常草率的方法,并没有解决将其余值分配给其他数组的其他问题。
关于如何更整齐地为数组分配10个值的任何建议,以及如何将每一行分配到不同的数组将非常感激!
感谢
答案 0 :(得分: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]);
}
修改强>
上面的代码使用与问题(逗号分隔值)相同的格式字符串。
如果空格分隔值正常,则可以使用直接循环,而不是单独的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]);
}
}
旁注:
如果要编写检测输入文件中错误的代码,则需要检查fscanf
的返回值。可能在学校项目中不需要,但在工业强度代码中是必需的。
答案 1 :(得分:3)
如果您知道有多少行,比如说100,那么您可以:
int arr[r][c];
for (i=0; i<r; i++) {
for (j=0; j<c-1; j++) {
fscanf(file, "%d, ", &arr[i][j]);
}
fscanf(file, "%d\n", &arr[i][j]);
}
答案 2 :(得分:1)
你需要使用循环。
#include <stdio.h>
for (size_t i = 0; i < 9; ++i)
fscanf("%d, ", &line1[i]);
fscanf("%d", &line[9]);
拥有二维数组会更好。
int a[NLINES][NCOLUMNS];
for (size_t i = 0; i < NLINES; ++i) {
for (size_t j = 0; j < NCOLUMNS - 1; ++j)
fscanf(fp, "%d, ", &a[i][j]);
fscanf(fp, "%d\n", &a[i][NCOLUMNS - 1]);
}