我尝试读取文本文件并将所有整数逐个传递给二维数组。但是,当我打印我试图传递的内容时,我得到了奇怪的输出。有什么问题吗?例如,如果文本是:
我得到这个:
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");
}
打印输出是错误的,因为您在设置变量和尝试打印变量之间更改了x和y的值。您需要将printf()
移动到您增加x
和y
的部分之前,但在您分配给数组之后。
就像它现在的样子,你给数组赋值,然后打印下一个尚未赋值的值。它是内存中恰好存在的任何值,例如-2或1967626458。
在打印索引后增加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");
}