Zeichenketteneingabe (auch Anfängerfrage)

Post Reply
Message
Author
Tux die Infobox

Zeichenketteneingabe (auch Anfängerfrage)

#1 Post by Tux die Infobox »

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 !

Benni

Re: Zeichenketteneingabe (auch Anfängerfrage)

#2 Post by Benni »

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

kyle
Posts: 14
Joined: 30. Jan 2001 8:16

Re: Zeichenketteneingabe (auch Anfängerfrage)

#3 Post by kyle »

Ivch seh schon Benni wird unser neuer C-Guru :)
Warum durchs Fenster gehen, wenn die Tür offen steht?

Tux die Infobox

Re: Zeichenketteneingabe (auch Anfängerfrage)

#4 Post by Tux die Infobox »

Okay, danke Benni du fortgeschrittener Anfänger ;) !

Tux die Infobox

Re: Zeichenketteneingabe (auch Anfängerfrage)

#5 Post by Tux die Infobox »

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 ;).

Jochen

Re: Zeichenketteneingabe (auch Anfängerfrage)

#6 Post by Jochen »

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?

Tux die Infobox

Re: Zeichenketteneingabe (auch Anfängerfrage)

#7 Post by Tux die Infobox »

Danke Jochen...

Post Reply