Daniel S. schrieb:
> Feld[i]=(char*)malloc(sizeof(char)* DIM_SPALTE);
Das macht nicht das, was Du erwartest.
> sizeof(char)* DIM_SPALTE
Wieviel mag das sein?
> #define GROESSE_FELD 4
> #define DIM_SPALTE GROESSE_FELD * 2+1
Also:
> sizeof (char) 4 2 + 1
Durch die Verwendung von Klammern im #define-Ausdruck ließe sich das
Problem beseitigen.
Davon abgesehen
> Feld=(char**)malloc(sizeof(char*)* DIM_ZEILE);
> for(i=0;i<DIM_SPALTE;i++){
> Feld[i]=(char*)malloc(sizeof(char)* DIM_SPALTE);
ist hier das Schleifenabbruchkriterium falsch, da sollte nicht
DIM_SPALTE, sondern DIM_ZEILE stehen. Das macht hier zwar nichts, da
beide gleich groß sind, aber wenn sie es nicht mehr sind (weil die
Feldgrößen geändert werden), knallts.
Im übrigen wird C-Sourcecode durchaus lesbarer, wenn man an sinnvollen
Stellen Leerzeichen zur Trennung verwendet:
> Feld = (char **) malloc(sizeof (char *) * DIM_ZEILE);
> for (i = 0; i < DIM_SPALTE; i++)
> {
> Feld[i] = (char *) malloc(sizeof (char) * DIM_SPALTE);
Die beiden Typecasts sind in C übrigens überflüssig; malloc gibt void*
zurück, das lässt sich beliebigen Pointertypen zuweisen.