从文件读取到二维数组 returns C 中的错误值?
Reading from a file into 2D array returns wrong values in C?
所以我有这个简单的程序,它从文件中读取值,然后我只想将它们打印到屏幕上。将数组打印到屏幕时会出现问题。它在数组中间添加了一些随机数。有人知道问题出在哪里吗?
这是输出:
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXROW 10
#define MAXCOL 12
int main(void) {
int i,j;
char numbers[MAXROW][MAXCOL];
FILE *file; /* FILE pointer */
file = fopen("data.txt", "r"); /* open a text file for reading */
for(i=0;i<MAXROW;i++){
for(j=0;j<MAXCOL;j++){
fscanf(file, "%d\t", &numbers[i][j]);
if(numbers[i][j] == '\n')
i++;
}
}
for (i=0; i<MAXROW; i++) {
printf("\n");
for (j=0; j<MAXCOL; j++) {
printf("%d ", numbers[i][j]);
}
}
fclose(file);
return 0;
}
这是我的 data.txt 文件:
改为使用 fgets() 一次获取一行,
然后使用 sscanf() 获取该行上的每个整数。
在你的代码中,我怀疑你是否遇到了这个条件 if(numbers[i][j] == '\n')。
因此,您正在循环到最大值并存储垃圾值。
逐行读取并将其解析为单个数字。
将循环更改为
for(i=0;i<MAXROW;i++)
for(j=0;j<MAXCOL;j++)
fscanf(file, "%d%*c", &numbers[i][j]);
numbers[i][j] 永远不会得到 '\n' 的值,因为它仅在您使用时匹配整数%d
所以我有这个简单的程序,它从文件中读取值,然后我只想将它们打印到屏幕上。将数组打印到屏幕时会出现问题。它在数组中间添加了一些随机数。有人知道问题出在哪里吗?
这是输出:
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXROW 10
#define MAXCOL 12
int main(void) {
int i,j;
char numbers[MAXROW][MAXCOL];
FILE *file; /* FILE pointer */
file = fopen("data.txt", "r"); /* open a text file for reading */
for(i=0;i<MAXROW;i++){
for(j=0;j<MAXCOL;j++){
fscanf(file, "%d\t", &numbers[i][j]);
if(numbers[i][j] == '\n')
i++;
}
}
for (i=0; i<MAXROW; i++) {
printf("\n");
for (j=0; j<MAXCOL; j++) {
printf("%d ", numbers[i][j]);
}
}
fclose(file);
return 0;
}
这是我的 data.txt 文件:
改为使用 fgets() 一次获取一行, 然后使用 sscanf() 获取该行上的每个整数。
在你的代码中,我怀疑你是否遇到了这个条件 if(numbers[i][j] == '\n')。 因此,您正在循环到最大值并存储垃圾值。 逐行读取并将其解析为单个数字。
将循环更改为
for(i=0;i<MAXROW;i++)
for(j=0;j<MAXCOL;j++)
fscanf(file, "%d%*c", &numbers[i][j]);
numbers[i][j] 永远不会得到 '\n' 的值,因为它仅在您使用时匹配整数%d