2016-10-16 11 views
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; 
} 
+0

コンパイラの警告を有効にして読み取ります。 – 2501

+0

コンパイラの警告がオンになっており、ビルドに成功したこと以外の出力はありません。 –

+0

より多くのコンパイラの警告を有効にする:https://ideone.com/Af6Pwl。 -Wall -Wextraはこれを捕らえるべきです。 – 2501

答えて

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

は、ポインタへのポインタを探していますが、あなたは自分のコンパイラは、おそらくとにかく互換性のない型を渡すとさせて頂いており

printMaze(originalMaze, width, height); 

に単一のポインタ(オリジナルの迷路)を供給しますプログラムを起動しますが、配列に値をロードしようとすると機能しません。

関連する問題