2017-01-25 1 views
1

Ich habe ein paar Fortschritte gemacht.Jetzt ist das Problem, das ich bekomme, ist "Warnung: 'Mat' kann in dieser Funktion nicht initialisiert werden [-Waybe-nicht initialisiert] scanf ("% d ", & mat [i] [j]); " und erhält den "segmentation fault (core dumped)" beim Laufen.Konstruieren einer benutzerdefinierten Matrix in C

Hier ist der Code so weit:

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

int main(){ 
    int **mat; 
    int l, k, i, j; 
    printf("rows?"); 
    scanf("%d", &k); 
    printf("columns?"); 
    scanf("%d", &l); 
    for(i = 0; i < k; i++){ 
    for(j = 0; j < l; j++){ 
     printf("mat[%d][%d]: ", i, j); 
     scanf("%d", &mat[i][j]); 
    } 
    } 
} 
    void prmat(int k, int l, int **mat){ 
     int i, j; 
     printf("\n\n"); 
     for(i = 0; i < k; i++){ 
      for(j = 0; j < l; j++){ 
      printf("%d", mat[i][j]); 
    } 
    } 
} 
+1

'int l, k; int mat [k] [l]; 'ist nicht möglich. Die Werte von "l" und "k" müssen bekannt sein, bevor die Matrix zugewiesen wird. – DyZ

+1

In Zukunft formatieren Sie bitte Ihren Code richtig. Die Leute hier mögen es nicht, mit schlampigem Code umzugehen. Es sieht einfach schlecht aus und ist schwerer zu lesen. Es sieht so aus, als würdest du deine Leser nicht respektieren oder sich darum kümmern, wie du Dinge tust oder wirklich eine Antwort willst. Außerdem gibt es hier täglich tausende Fragen. Die Leute wollen einfach nur das technische Problem betrachten und versuchen, es möglichst schnell zu lösen, also ist all das zusätzliche Zeug über das, was Sie denken, entwerfen, noobie, etc ... nur eine Verschwendung von Zeit und macht die Frage länger lesen. – clearlight

+1

Betrachten Sie die [2 Minute Tour] (http://stackoverflow.com/tour) und sehen Sie [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask) – clearlight

Antwort

0

Wie DYZ sagte, sollten wir die Anweisung int mat [k] [l] nicht geben, ohne l und k initialisiert. Standardmäßig l und k hat einen Wert Müll, das Problem

erstellen kann

Außerdem sollten Sie einen Prototyp haben wie unten, wo k Zeile und l repräsentiert Spalten int prmat (int ** Matte, int k, int l) stellen