zweidimensionale dynamische Arrays



  • Jedesmal wenn ich ein zweidimensionales array erstelle und auf die Einträge m[0][k] (0<=k<=6) zugreife stehen dort keine Nullen, was sie bei calloc eigentlich sollten. auch wenn ich die Nullen nachträglich reinschreibe stehen sie dort nicht... Überall stehen Nullen nur nicht in der ersten Zeile. Woran liegt das?

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

    int main() {
    char ** m = calloc(6, sizeof(char));
    for(int i = 0; i < 7; i++) {
    m[i] = calloc(7, sizeof(char));
    }
    for(int i = 0; i < 6; i++) {
    for(int j = 0; j < 7; j++) {
    printf("%d", m[i][j]);
    }
    puts("");
    }
    return 0;
    }



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
         char ** m = calloc(6, sizeof(char*)); //  Hier muss ein sizeof(char*) ! Pointer !
         for(int i = 0; i < 6; i++) {          // Hier gehts auch nur von 0 bis 5 (6 Einträge)
              m[i] =  calloc(7, sizeof(char));
         }
         for(int i = 0; i < 6; i++) {
              for(int j = 0; j < 7; j++) {
                   printf("%d", m[i][j]);   
              }
              puts("");
         }
         return 0;
    }
    

    Das schöne bunte machen die cpp Tags, Code markieren und auf den C/C++ Button unter den 🙂 😃 klicken.


Anmelden zum Antworten