Mehrdimensionales Array wird falsch ausgegeben (Gelöst)
-
Hi,
ich fange gerade mit C an und habe ein Problem mit einen mehrdimensionalen Array .#include <stdio.h> #include <stdlib.h> int main(){ int b=9, h=9; char feld_lvl_1[h][b]; for(h=0;h<10;h++){ if(h!=4) for(b=0;b<10;b++) feld_lvl_1[h][b]='O'; else for(b=0;b<10;b++) feld_lvl_1[h][b]=' '; } for(h=0;h<=9;h++){ for(b=0;b<=9;b++) printf("%c ", feld_lvl_1[h][b]); printf("\n"); } return 0; }
Ich versuche ein Feld aufzubauen in dessen Mitte sich kein Zeichen befindet. In der vierten und fünften Zeile sind aber die letzten Zeichen miteinander vertauscht. Wenn ich die if/else Schleife entferne, dann scheint alles richtig zu funktionieren.
-
Ändere mal die Definition des Arrays (Zeile 6) in
char feld_lvl_1[10][10];
Bei der Definition gibst du die Anzahl der Elemente an (hier 10)
Da der Index aber immer bei 0 beginnt, hat das höchste Element einen um 1 niedrigeren Index (hier 9).Du hattest aber als Anzahl 9. Demnach ist der höchste Index 8.
Du greifst aber in deinen Schleifen, die bis <10 laufen, auf das Element 9 zu.Da du die Variablen für die Grenzen (h und b) gleich wieder überschreibst und in den for-Schleifen feste Grenzen verwendest, brauchst du bei der Definition keine Variablen Angaben.
Und es ist eine if-Anweisung. Es gibt keine if-Schleifen.
-
Jetzt funktioniert es. Für den dummen Fehler könnte ich mir echt selbst in den Arsch beißen.
Danke für die Hilfe.
-
Dafür wirst du diesen Fehler nicht mehr machen.