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

时间:2013-05-05 21:42:32

标签: file-io multidimensional-array

我尝试读取文本文件并将所有整数一个接一个地传递给二维数组。但是当我打印出我试图通过的内容时,我会得到奇怪的输出。可能是什么问题呢? 例如,如果文本是: 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");
    }

2 个答案:

答案 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");
}