用C语言从文件中扫描字符矩阵的问题

问题描述 投票:1回答:1

在这个简单的程序中,我的目标是扫描一个文件(称为map.dat)中的矩阵。由于某些原因,每当我试图扫描它时,一切都很顺利,直到第6行。在它获取了第5行的所有元素后,它继续扫描第6行,这工作了一段时间,然后当j==10时,第6行的元素开始进入第5行,然后第9行从矩阵中删除。我试着用字符串逐行扫描,但结果似乎是一样的。

#include <stdio.h>
#include <stdlib.h>
#define ROWS 10
#define COLUMNS 40

int main(int argc,char* argv[])
{
    FILE* fp=fopen("map.dat","r");

    if(fp==NULL)
    {
        exit(1);
    }

    char m[ROWS][COLUMNS+2];
    int i,j;

    for(i=0; i<ROWS; i++)
    {
        for(j=0; j<COLUMNS+1; j++)
        {
            fscanf(fp,"%c",&m[i][j]);
        }
    }
   return 0;
}

这就是map.dat文件中的内容。

........................................
....#####...............................
....#####...............................
....#####...............##############..
....#####.....###.......##############..
....#####.....###.......................
..............###........######.........
..............###........######.........
.........................######.........
........................................
c file multidimensional-array
1个回答
1
投票

我刚刚打印出来,它工作得很好。

#include <stdio.h>
#include <stdlib.h>
#define ROWS 10
#define COLUMNS 40

int main(int argc,char* argv[])
{
    FILE* fp=fopen("/home/avidbots/Desktop/test/map.dat","r");

    if(fp==NULL)
    {
        exit(1);
    }

    char m[ROWS][COLUMNS+2];
    int i,j;

    for(i=0; i<ROWS; i++)
    {
        for(j=0; j<COLUMNS+1; j++)
        {
            fscanf(fp,"%c",&m[i][j]);
        }
    }

    for(i=0; i<ROWS; i++)
    {
        for(j=0; j<COLUMNS+1; j++)
        {
            printf("%c", m[i][j]);
        }
        printf("\n");
    }

   return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.