1
文字列として入力した一連の行をユーザーに入力させ、その文字列を配列に保存したいとします。グリッド内の各項目の値を出力するユーティリティ関数があります。しかし、putchar()
を使用しているprintMaze()
の行は、おそらく何かが**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;
}
コンパイラの警告を有効にして読み取ります。 – 2501
コンパイラの警告がオンになっており、ビルドに成功したこと以外の出力はありません。 –
より多くのコンパイラの警告を有効にする:https://ideone.com/Af6Pwl。 -Wall -Wextraはこれを捕らえるべきです。 – 2501