problem mit scanf und arry



  • hallo.
    also ich post mal denn code:

    [cpp]
    char name[10]
    //einlesen
    scanf("%c\n",name[0]);
    scanf("%c\n",name[1]);

    /ausgeben
    printf("%c\n",name[0]);
    printf("%c\n",name[1]);

    wieso geht das nicht? ­čś×

    mfg
    master_01



  • ich glaube, beim lesen mu├čt du die adresse des einzulesenden dinges angeben.
    scanf("%c\n",&name[0]);



  • Nur der Name des Arrays ist ein Zeiger, und zwar auf das erste Element des Arrays.

    c_linux schrieb:

    char name[10]
    //einlesen
    scanf("%c\n",name[0]);
    scanf("%c\n",name[1]);
    
    /ausgeben
    printf("%c\n",name[0]);
    printf("%c\n",name[1]);
    

    wieso geht das nicht? ­čś×

    Mit der Indexangabe handelt es sich aber nicht um einen Zeiger, sondern bereits um einen konkreten char. An scanf mu├č aber die Adresse ├╝bergeben werden; printf hast Du richtig bedient.

    Anders ausgedr├╝ckt:

    name == &name[0]

    name + 2 == &name[2]

    Entsprechend:

    *name == name[0]

    *(name + 2) == name[2]



  • Hi,

    scanf() erwartet einen Zeiger als Argument.

    Mit "char name[10]" definierst du zwar name als char *, allerdings ist das name[0] in deinem scanf() kein Zeiger mehr (mit name[0(1...)] w├╝rdest du der Funktion das erste(zweite...) Zeichen in "name" ├╝bergeben.)

    => scanf("format",name); // liest eine Zeichenkette in name ein

    Wenn name ein Array von Zeichenketten sein soll, brauchst du ein Array von char-Zeigern, also:

    char name[10][10]; // Zehn Strings mit je 9 Zeichen (+ '\0').
    Dann sollte deine Version mit name[0(1..)] funktionieren.

    mfg
    Martin



  • *zu langsam*



  • char name[10];
    
    	scanf("%c\n",name[0]);
    	scanf("%c\n",name[2]);
    
    	printf("%c\n",name[0]);
    	printf("%c\n",name[2]);
    

    so gehts leider nicht. habe ich da was falsch verstanden? ­čś×

    danke das ihr mir hilft.



  • hmm schrieb:

    so gehts leider nicht. habe ich da was falsch verstanden? ­čś×

    Ja, du hast etwas wichtiges vergessen: n├Ąmlich den Thread zu lesen.

    Vergleich zB mal deinen Code mit dem von volkard.



  • char name[10]; 
    
        scanf("%c",&name[0]); 
        scanf("%c",&name[2]); 
    
        printf("%c",&name[0]); 
        printf("%c",&name[2]);
    

    da



  • Versuch dich doch mal etwas gehobener auszudr├╝cken. Klingt ja, als w├Ąrst du 2. Dein Problem wird sein, dass du hinter dem printf das '&' Zeichen stehen hast. Damit liest du die Addresse aus (Bei scanf muss es allerdings stehen!). Ferner wirst du wahrscheinlich darauf hinauswollen, dass du nur ein Zeichen einlesen kannst. Das liegt daran, dass nach deiner ersten Eingabe der Zeilenumbruch noch im Puffer steht. Wenn du noch mehr wissen willst, dann stell deine Fragen vern├╝nftig.....


Log in to reply