Char *Feld mit scanf befüllen und ausgeben



  • Hi Leute,

    die Idee ist eigentlich ganz simpel.

    Ich möchte ein Feld mit Namen befüllen und dann ausgeben.
    Habe mir folgendes überlegt,aber leider funktioniert das scheinbar nicht so einfach.

    Woran liegt es ?

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc,char*argv[])
    {
    int i;
    char *namen[5];
    
    for(i=0 ; i<= 5; i++)
    {
    printf("Namen eingeben: ");
    scanf("%s",&namen[i]);
    }
    
    for(i=0 ; i<= 5; i++)
    {
    printf("Namen ausgeben: %s",namen[i]); //hier auch schon *namen[i] getestet
    }
    }//main
    

    Gruesse 😉



  • Mit char *namen[5]; hast du ein Feld aus 5 Zeigern auf char (declare namen as array 5 of pointer to char)
    Diese Zeiger zeigen irgendwo hin, jedenfalls nicht auf Speicher in dem du etwas speichern darfst.

    Und der Parameter bei scanf ist verkehrt:
    Das &namen[i] gibt die Adresse der Speicherstelle an, an der der Zeiger gespeichert wird. Du willst aber angeben wo der Text hin soll: namen[i] ohne &

    Entweder char namen[5][100];
    oder den Speicher mit malloc besorgen (freigeben nicht vergessen)



  • Vielen Dank für die schnelle Antwort ! 😃



  • Dein Array hat 5 Elemente, aber deine beiden for-Schleifen
    zaehlen 6x. Von 0 - 5.

    Also < 5, statt <= 5.

    Gruesse


Anmelden zum Antworten