我想让用户输入一系列我作为char读取的行,并将其保存到数组中。我有一个实用函数,应该打印网格中每个项目的值。但是,使用printMaze()putchar()中的行导致了分段错误,可能是因为**maze参数有问题,尽管我不知道是什么原因造成的,也不知道如何修复它。下面是代码。

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

void printMaze(char **maze, int width, int height){
    for (int x = 0; x < width; x++){
        for (int y = 0; y < height; y++){
            putchar(maze[x][y]);
        }
    }
}

int main(int argc, char *argv[]){
    int width, height;
    scanf("%d %d", &height, &width);
    char originalMaze[width][height];
    for (int y = 0; y < height; y++){
        for (int x = 0; x < width; x++){
            originalMaze[x][y] = getchar();
        }
        getchar();
    }
    printMaze(originalMaze, width, height);
    return 0;
}

最佳答案

void printMaze(char **maze, int width, int height)

正在寻找指向指针的指针,但您只需在
printMaze(originalMaze, width, height);

编译器可能正在传递不兼容的类型并让程序启动,但一旦尝试将值加载到数组中,它将无法工作。

关于c - C Char数组导致段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40071585/

10-16 18:43
查看更多