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