0

我尝试读取文本文件并将所有整数一一传递给二维数组。但是当我打印我试图通过的东西时,我得到了奇怪的输出。可能是什么问题呢?例如,如果文本是:0 1 1 1 0 1 1 0 1 1 1 1

我明白了:

索引=-2 索引=1967626458 索引=1967694074 索引=207568 索引=207320 索引=2686776 索引=1967693597 索引=0 索引=0 索引=2686832 索引=236 索引=228 索引=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");
    }
4

2 回答 2

0

打印输出是错误的,因为您在设置变量和尝试打印它之间更改了 x 和 y 的值。您需要在增加和printf()的部分之前移动,但在分配给数组之后。xy

就目前而言,您分配给数组,然后打印下一个尚未分配的值。它是该内存中发生的任何值,例如 -2 或 1967626458。

于 2013-05-05T21:50:35.957 回答
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");
}
于 2013-05-05T23:21:07.420 回答