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.


Anmelden zum Antworten