从C中的文件扫描字符矩阵时出现问题

时间:2020-05-13 18:49:52

标签: c file multidimensional-array

在这个简单的程序中,我的目标是从文件(称为map.dat)中扫描矩阵。出于某种原因,每当我尝试扫描时,一切都会顺利进行到第6行。在获取第5行的所有元素之后,继续扫描第6行,该行会工作一段时间,然后当j == 10时,第6行的元素开始进入第5行,然后从第9行中删除第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文件中的内容:

........................................
....#####...............................
....#####...............................
....#####...............##############..
....#####.....###.......##############..
....#####.....###.......................
..............###........######.........
..............###........######.........
.........................######.........
........................................

1 个答案:

答案 0 :(得分: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;
}