Fehlermeldung bei dynamischem 2D-Array
-
Hallo,
ich habe folgendes C-Programm, um ein 2D Array mit einstellbarer Größe auszugeben:#include <stdio.h> #include <conio.h> #include <stdlib.h> typedef unsigned int uint; int BREITE; int HOEHE; int** Feld; main() { uint BREITE, HOEHE; printf("Wie gross soll die Y-Dimension sein? "); scanf_s("%d", &HOEHE); printf("Wie gross soll die X-Dimension sein? "); scanf_s("%d", &BREITE); Feld = malloc(HOEHE * sizeof(int*)); for (int y = 0; y < HOEHE; y++) Feld[y] = malloc(BREITE * sizeof(int)); int counter = 0; for (uint y = 0; y < HOEHE; y++) { for (uint x = 0; x < BREITE; x++) Feld[y][x] = counter++; } // Füllt das 2d array mit '#' an den Rändern und 'leer' in der Mitte for (int i = 0; i < HOEHE; i++) { for (int j = 0; j < BREITE; j++) { if (i == 0 || j == 0 || i == HOEHE - 1 || j == BREITE - 1) { Feld[i][j] = '#'; } else Feld[i][j] = ' '; } } printf("\n"); for (int i = 0; i < HOEHE; i++) { for (int j = 0; j < BREITE; j++) { printf("%c", Feld[i][j]); } printf("\n"); } free(Feld); _getch(); }
Wenn ich jetzt die Funktion, welche mir das Array mit '#' ausfüllt, außerhalb der main-Funktion setzte:
#include <stdio.h> #include <conio.h> #include <stdlib.h> typedef unsigned int uint; int BREITE; int HOEHE; int** Feld; void zeichne_kreuzchen() { for (int i = 0; i < HOEHE; i++) { for (int j = 0; j < BREITE; j++) { if (i == 0 || j == 0 || i == HOEHE - 1 || j == BREITE - 1) { Feld[i][j] = '#'; } else Feld[i][j] = ' '; } } } main() { uint BREITE, HOEHE; printf("Wie gross soll die Y-Dimension sein? "); scanf_s("%d", &HOEHE); printf("Wie gross soll die X-Dimension sein? "); scanf_s("%d", &BREITE); Feld = malloc(HOEHE * sizeof(int*)); for (int y = 0; y < HOEHE; y++) Feld[y] = malloc(BREITE * sizeof(int)); int counter = 0; for (uint y = 0; y < HOEHE; y++) { for (uint x = 0; x < BREITE; x++) Feld[y][x] = counter++; } zeichne_kreuzchen(); printf("\n"); for (int i = 0; i < HOEHE; i++) { for (int j = 0; j < BREITE; j++) { printf("%c", Feld[i][j]); } printf("\n"); } free(Feld); _getch(); }
gibt die Konsole nur Käse aus.
Ich weiß nicht wieso...
Grüße
Johannes
-
Benutze Code Tags so kann man das kaum lesen vor allen Dingen bei so einem langen Code
-
johannes2.0 schrieb:
gibt die Konsole nur Käse aus.
Weil dein Code Käse ist.
Aktiviere mal die Warnungen, du vergleichst signed mit unsigned Werten.
Globale Variablen gehören auch raus und du hast kein return in der main Funktion.#include <conio.h>
ist nicht standard
scanf_s("%d", &HOEHE);
scanf_s lässt sich nicht wie scanf benutzen, woher hast du das?
Lernst du mit einem Buch? Wenn ja dann wirf es weg.
-
Ok es lag an den globalen Variablen bzw. an der doppelten Deklaration.
Ich habe sie entfernt und es funktioniert.Danke schön für den Hinweis
-
In C schreibt man i.A. Preprozessor-Makros groß und Variabeln klein.