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

C语言中扫描文件中字符矩阵的问题,c,file,multidimensional-array,C,File,Multidimensional Array,在这个简单的程序中,我的目标是从一个文件(称为map.dat)中扫描一个矩阵。由于某种原因,每当我试图扫描它,一切都顺利,直到第六排。在获取第5行中的所有元素后,它继续扫描第6行,这会运行一段时间,然后当j==10时,第6行中的元素开始进入第5行,然后从矩阵中删除第9行。我试着用字符串一次扫描一行,但结果似乎是一样的 #include <stdio.h> #include <stdlib.h> #define ROWS 10 #define COLUMNS 40 int

在这个简单的程序中,我的目标是从一个文件(称为map.dat)中扫描一个矩阵。由于某种原因,每当我试图扫描它,一切都顺利,直到第六排。在获取第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;
}

我刚打印出来,效果很好

#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;
}
#包括
#包括
#定义第10行
#定义第40列
int main(int argc,char*argv[])
{
文件*fp=fopen(“/home/avidbots/Desktop/test/map.dat”,“r”);
如果(fp==NULL)
{
出口(1);
}
字符m[行][列+2];
int i,j;

对于(i=0;我为什么要对
fscanf
大惊小怪,而你可以自己
fread
并对其进行解析?鉴于所需格式与文件中的格式非常接近,你可以对缓冲区进行一些非常简单的处理,并从原始缓冲区中获得所需的数组。检查fscanf@tadman我是一个非常基础的程序mer和我只是在为我的CS课程学习,我们只见过fscanf或FGET,所以我相信我们应该在解决这个问题时使用这些函数。
fscanf
是一个你应该尽快摆脱的拐杖。C的真正潜力来自于制作你自己的简单解析器,以及在必要时增加复杂性@4386427返回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;
}