【发布时间】:2018-04-03 00:07:38
【问题描述】:
我有如下两列文件:
9 9
1 2
3 2
我正在尝试使用fscanf 读取它并将我的int * buff 作为格式。
FILE *fp = fopen(argv[1], "r");
int num_rows = 0;
int num_columns = 2;
int i = 0;
int j = 0;
int *buff = calloc(10, num_columns * sizeof(int));
我遇到的问题是我不知道为fscanf(fp, %d %d\n, idk1, idk2) 放置什么
我想将它们放在buff 中,但我不知道在哪个位置。
for(i = 0; i < num_columns; i++) {
for(j = 0; j <= num_rows; j++){
int line = fscanf(fp, "%d %d\n", &buff[num_columns], &buff[num_rows]);
if(line == EOF){
break;
}
if(num_rows % 10 == 0){
num_rows += 10;
buff = realloc(buff, num_rows * num_columns * sizeof(int));
}
}
}
我正在读取我认为是相同位置的值,但我没有看到相同的输出。
for(i = 0; i < num_rows; i++){
for(j = 0; j < num_columns; j++){
printf("%d", buff[i * num_columns + j]);
}
printf("\n");
}
我认为这是输出:
92
20
00
00
00
...
...
但它应该只匹配输入文件:]
9 9
1 2
3 2
我应该在fscanf 内放置什么位置,以便稍后在memarray[i * num_columns + j]; 内打印相同的数据?
【问题讨论】:
-
memarray是什么?请发帖minimal reproducible example!不是 COMPLETE 的重要部分。请提供一个预期输出的例子,我不明白你想要什么。 -
为什么不使用
i和j?我看到了其他一些问题:您在哪里将num_rows设置为 0 以外的值?您首先遍历列,然后遍历行,但文件一次读取一行,因此可能应该切换这两个for构造。
标签: c pointers memory-management