2016-10-16 2 views
1

Je souhaite que l'utilisateur entre une série de lignes que je lis en tant que caractères, et enregistrez-le dans un tableau. J'ai une fonction d'utilité qui devrait imprimer la valeur de chaque article dans la grille. Toutefois, la ligne printMaze() qui utilise putchar() provoque une erreur de segmentation, probablement parce que quelque chose est en désordre avec l'argument **maze, bien que je ne sache pas ce qui le cause, ni comment le réparer. Voici le code ci-dessous.C Arrays Char provoquant une erreur de segmentation

#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

Activez les avertissements du compilateur et lisez-les. – 2501

+0

Les avertissements du compilateur sont activés et il n'y a pas de sortie autre que la réussite de la génération. –

+0

Activer davantage d'avertissements du compilateur: https://ideone.com/Af6Pwl. -Wall -Wextra devrait attraper ça. – 2501

Répondre

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

recherche un pointeur vers un pointeur, mais vous fournir un seul pointeur (labyrinthe d'origine) dans

printMaze(originalMaze, width, height); 

Votre compilateur est probablement passer le type incompatible de toute façon et laisser la démarrage du programme, mais cela ne fonctionnera pas une fois que vous essayez de charger les valeurs dans le tableau.