1 2 3 4 5
1 2 3 4 5
1 2 3
2 5 7 8 9 8
我是C的初学者,我想写一个小程序,但我遇到了这个问题。
问题是:如果文件中包含整数,则每行的整数数不同,但都在最大整数数内。
例如,上面的整数,每行的最大整数数为6,每行可以有1到6个整数。每个文件的最大整数数也会改变。
如何将这些数字存储到2D数组中?或者将整数逐行存储到数组中。 (不要担心空值)
我尝试使用fscanf
,但我不知道如何定义每次阅读的整数。
================================ 感谢大家的慷慨帮助,我已经想出了使用Joachim Pileborg的想法。
#define MAX_SIZE_BUFFER 1000
FILE *file;
int len = MAX_SIZE_BUFFER;
char sLine[MAX_SIZE_BUFFER];
int i, j, maxnumber = 6;
int *numbers, *temp;
char *sTok;
numbers = (int *) malloc(sizeof(int) * maxnumber);
for (i = 0; i < maxnumber; i++) {
numbers[i] = -1;
}
while (fgets(sLine, len, file) != NULL) {
i = 0;
sTok = strtok(sLine, " ");
while (sTok != NULL) {
numbers[i] = atof(sTok);
sTok = strtok(NULL, " ");
i++;
}
/* This temp stores all the numbers of each row */
temp = (int *) malloc(sizeof(int) * i);
for (j = 0; j < i; j++) {
temp[j] = numbers[j];
}
}
上面的代码没有完成,但它是我如何做到这一点的想法。