我尝试读取文本文件并将所有整数一个接一个地传递给二维数组。但是当我打印出我试图通过的内容时,我会得到奇怪的输出。可能是什么问题呢? 例如,如果文本是: 0 1 1 1 0 1 1 0 1 1 1 1
我明白了:
index = -2 index = 1967626458 index = 1967694074 index = 207568 index = 207320 index = 2686776 index = 1967693597 index = 0 index = 0 index = 2686832 index = 236 index = 228 index = 3
以下是代码:
#include<stdio.h>
int main()
{
FILE *input;
//read file!
if((input = fopen("abc.txt","r"))==NULL){
printf("Error in reading file !\n");
return 0;
}
int C = 4;
int R = 3;
int M[3][4];
int x=0;
int y=0;
int c;
//array of sorted list!
while(!feof(input)){
if(!feof(input)){
fscanf( input, "%d",&c);
M[x][y]=c;
y++;
if(y==C){
x++;
y=0;
}
printf("index=%d \n",M[x][y]);
}
}
system("pause");
}
答案 0 :(得分:0)
打印输出错误,因为您在设置变量和尝试打印时更改了x和y的值。您需要在递增printf()
和x
的部分之前移动y
,但是在分配给数组之后。
现在,您将分配给数组,然后打印下一个尚未分配的值。这是该内存中的任何值,例如-2或1967626458。
答案 1 :(得分:0)
打印索引后只需增加y
变量。
#include<stdio.h>
int main()
{
FILE *input;
//read file!
if((input = fopen("abcd.txt","r"))==NULL)
{
printf("Error in reading file !\n");
return 0;
}
int C = 4;
int R = 3;
int M[3][4];
int x=0;
int y=0;
int c;
//array of sorted list!
while(!feof(input))
{
if(!feof(input))
{
fscanf( input, "%d",&c);
M[x][y]=c;
//y++ ; not increment here
if(y==C)
{
x++;
y=0;
}
printf("index=%d \n",M[x][y]);
y++;//increment here
}
}
system("pause");
}