从文本文件读取到二维数组



我尝试读取文本文件并将所有整数逐个传递给二维数组。但是,当我打印我试图传递的内容时,我得到了奇怪的输出。有什么问题吗?例如,如果文本是:

我得到这个:

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()移动到您增加xy的部分之前,但在您分配给数组之后。

就像它现在的样子,你给数组赋值,然后打印下一个尚未赋值的值。它是内存中恰好存在的任何值,例如-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");
}

相关内容

  • 没有找到相关文章

最新更新