Hi,
So, also ich möchte eigentlich nur eine Stringeingabe machen lassen, doch leider weiss ich nicht, was ich falsch mache oder wieso es nicht funktioniert.
Die Funktion, die für die Namenseingabe (in meinem Prog) zuständig ist, sieht wie folgt aus:
void namen()
{
printf ("Geben Sie bitte Ihren Namen ein, Spieler 1: ");
name1=scanf ("%s", &namen2);
printf ("
Danke %s", name1);
printf ("
Geben Sie bitte Ihren Namen ein, Spieler 2: ");
name2=scanf ("%s", &namen3);
printf ("
Danke %s", name2);
}
Sämtliche Variablen sind global definiert und vom Typ Char (name1, name2, namen2, namen3) !
Leider funktioniert das ganze auch mit Umwnadlungszeichen c nicht. Genau bevor diese Funktion aufgerufen wird, wird ein Enter für eine andere Eingabe gedrückt und irgendwie scheint dieses Enter auch gleichzeitig für die Frage nach dem Namen von Spieler 1 verwendet zu werden, denn diese überspringt er dann und fragt dann gleich nach dem Namen von Spieler 2. Und die Ausgabe klappt gar nicht, sprich die Ausgabe ist hinterher immer nur "Danke " und nix weiter.
Wenn ich s, wie im Beispiel als Umwandlungszeichen verwende, dann hat auch der erste Spieler eine Chance seinen Namen einzugeben, aber leider gehts danach nicht weiter. Die zweite Abfrage lässt er dann VÖLLIG weg und beendet das ganze Programm. Aber auch mit s heisst es dann immer nur "Danke " und nix weiter.
Danke euch für eure Hilfe !
Zeichenketteneingabe (auch Anfängerfrage)
Re: Zeichenketteneingabe (auch Anfängerfrage)
Ha!
Einscheinend bin ich zum fortgeschrittenen Anfänger aufgestiegen.
Da ein String ja ein definierten Pointer hat, darfst Du den bei scanf Dereferenzierungoperator(&) nicht benutzen.
Also muss es heisen:
scanf("%s",namen2);
Nicht:
scanf("%s",&namen2);
Gruss
Benni
Einscheinend bin ich zum fortgeschrittenen Anfänger aufgestiegen.
Da ein String ja ein definierten Pointer hat, darfst Du den bei scanf Dereferenzierungoperator(&) nicht benutzen.
Also muss es heisen:
scanf("%s",namen2);
Nicht:
scanf("%s",&namen2);
Gruss
Benni
Re: Zeichenketteneingabe (auch Anfängerfrage)
Ivch seh schon Benni wird unser neuer C-Guru
Warum durchs Fenster gehen, wenn die Tür offen steht?
Re: Zeichenketteneingabe (auch Anfängerfrage)
Okay, danke Benni du fortgeschrittener Anfänger !
Re: Zeichenketteneingabe (auch Anfängerfrage)
Oh...
Nun habe ich die &-Symbole entfernt, doch leider schreibt das Programm nun, an Stelle von meinen Angaben "(null)" hin.
Was ist denn nun noch falsch ?
Wenn ich das Programm sich selbstständig, also nicht direkt aus KDevelop heraus, abarbeiten lasse, dann schreibt er (wie vorher) gar nichts hin. Es heisst dann nach wie vor "Danke ".
Helft Tux der Infobox bitte... Danke .
Nun habe ich die &-Symbole entfernt, doch leider schreibt das Programm nun, an Stelle von meinen Angaben "(null)" hin.
Was ist denn nun noch falsch ?
Wenn ich das Programm sich selbstständig, also nicht direkt aus KDevelop heraus, abarbeiten lasse, dann schreibt er (wie vorher) gar nichts hin. Es heisst dann nach wie vor "Danke ".
Helft Tux der Infobox bitte... Danke .
Re: Zeichenketteneingabe (auch Anfängerfrage)
Wenn sämtliche Variablen vom Typ char sind, ist das Problem klar: Sie bieten Platz für genau ein Zeichen. Was Du brauchst, sind entweder Variablen vom Typ "char *", also Pointer auf Zeichen (und Zeichenketten, die dann mit '\0' abgeschlossen sein müssen), die auf reservierten Speicher zeigen (mittels malloc()), oder aber Variablen vom Typ "char <i>name</i>[20]", wenn Du Variablen mit 20 Zeichen Speicherplatz (inkl. '\0') möchtest.
OK?
OK?