Problem mit *Var[] und scanf



  • Wie kann ich bei folgendem Quellcode direct ein Array-Element mit scanf aendern?

    #include <stdio.h>
    
    int main()
    {
        int i;
        char *Tage[] = {"Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"};
        scanf("%s",Tage[3]); //Hier ist das Problem
        for(i = 0;i < 7;++i)
        {
            printf("%s\n",Tage[i]);
        }
        getchar();
    }
    


  • char* tage[] legt ein array von konstanten strings an

    so muss es heißen:
    char tage[][11] = { ... }



  • DrGreenthumb schrieb:

    char* tage[] legt ein array von konstanten strings an

    so muss es heißen:
    char tage[][11] = { ... }

    Ja aber ohne scanf kann ich das Array ja verändern.

    Tage[3] = "Test"; /* z.B. */
    


  • mit tage[3] = "text" änderst du das tage-array, (tage[3] zeigt jetzt auf "text") aber nicht den text der hinter tage[3] steht.

    tage[3][0] = 'x' würde dagegen schiefgehen.



  • DrGreenthumb schrieb:

    mit tage[3] = "text" änderst du das tage-array, (tage[3] zeigt jetzt auf "text") aber nicht den text der hinter tage[3] steht.

    tage[3][0] = 'x' würde dagegen schiefgehen.

    Okay, Danke.
    Also kann ich *Var[] nicht verändern, da konstant.
    Und ich muss Var[][] nehmen, richtig?



  • ja, bzw. wichtig ist eben dieser unterschied:

    char* s = "hallo"; // konstant
    char s[] = "hallo"; // änderbar



  • DrGreenthumb schrieb:

    ja, bzw. wichtig ist eben dieser unterschied:

    char* s = "hallo"; // konstant
    char s[] = "hallo"; // änderbar

    Danke, über den Dereferenzierungsoperator kann ich also *s auch nicht mehr verändern?!




Log in to reply