【发布时间】:2017-03-26 17:47:07
【问题描述】:
所以我有一个简单的程序,它从文件中读取值,然后我只想将它们打印到屏幕上。将数组打印到屏幕时会出现此问题。它在数组中间添加了一些随机数。有人知道问题出在哪里吗?
这是我的代码:
#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;
}
【问题讨论】:
-
请剪切并粘贴文本。不是图片
-
删除
fscanf格式字符串中的\t。%d格式会自动跳过前导空格,但您需要满足\t的要求。那奇怪的if(numbers[i][j] == '\n') i++是为了什么?你的意思是break;?为什么打破内循环时不应该有随机数?char numbers[MAXROW][MAXCOL];未初始化。 -
尝试在
char numbers[...][...];中将char更改为int-- 如果可行,我有一个答案。如果没有,我不知道。
标签: c arrays multidimensional-array fopen