gpt4 book ai didi

c - 读取文件并存储在数组中

转载 作者:行者123 更新时间:2023-11-30 19:12:28 27 4
gpt4 key购买 nike

我有一个迷宫输入文件 maze.txt,如下所示:

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

其中“#”代表墙壁,“.”代表墙壁。代表可通过的细胞。我希望能够使用输入重定向读取此文件:

    mazeprogram.exe < maze.txt

我希望能够打印出这个迷宫中有多少行和列,如下所示:

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

我还想坚持使用 scanf(),因为我正在努力提高 C 编程的基础知识。

到目前为止,我在将行和列分配给二维数组时遇到了麻烦。这是我到目前为止所拥有的:

    #include <stdio.h>
#include <stdlib.h>

#define MAX_HEIGHT 100
#define MAX_WIDTH 100
#define wall "#"
#define path_cell "."

typedef struct {
char type;
int visited;
int final_path;
} mazecells_t;

typedef struct {
int height;
int width;

mazecells_t M[MAX_HEIGHT][MAX_WIDTH];

} m_type;

void read_maze(m_type *maze);

int
main(int argc, char *argv[]) {
m_type MAZE;

read_maze(&MAZE);

return 0;
}

void
read_maze(m_type *maze) {
int row=0, col=0;

scanf("%d %d", &maze->height, &maze->width);

for (row=0; row < maze->height; row++) {

for(col=0; col < maze->width; col++) {
maze -> M[row][col];
}
}
}

我知道到目前为止我的代码是不正确的,我只是很难将迷宫输入中的行和列分配给二维数组。我希望能够做到这一点,以便我可以打印列和行。如果我没有朝着正确的方向前进,任何帮助我走上正确轨道的帮助将不胜感激。

谢谢大家:)

最佳答案

试试这个:

void
read_maze(m_type *maze) {
int row=0, col=0;
char ch;

while(EOF != scanf("%c", &ch)){
if(ch == wall || ch == path_cell){//#define wall '#' #define path_cell '.'
maze->M[row][col].type = ch;
maze->M[row][col].visited = 0;
maze->M[row][col].final_path = 0;
++col;
} else if(ch == '\n'){
maze->width = col;//uncheck same size and max size limit
col = 0;
++row;
}
}
if(col != 0)
++row;//uncheck max size limit

maze->height = row;

printf("maze has %d rows and %d columns\n", maze->height, maze->width);
for (row = 0; row < maze->height; row++) {
for(col = 0; col < maze->width; col++) {
putchar(maze->M[row][col].type);
}
putchar('\n');
}
}

关于c - 读取文件并存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37100862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com