Dabei seit: 19.08.2002
Beiträge: 2.141
Herkunft: Frankfurt Referer: google/yahoo Realname: padapow pow pow patz patz
Chris Hunter ist männlich
Bewertung:
Ich verstehs nicht....
scanf hält die ausgabe doch an und liest die eingabe aus stdin und friemelt das in die angegebene variabel....
oder seh ich das falsch? wie verhält sich scanf denn genau?
Habe eine Lösung gefunden, die sich glaube ich auf das was ThiefMaster mit dem Zeilenumbruch bezieht. Aber warum es mit diesem scanf() funktioniert ist mir trotzalledem ein Rätsel, bzw. warum es mit dem anderen nicht geht.
code:
1:
scanf("\n %c", &test);
__________________ SELECT * FROM brain WHERE clue > 0;
Dabei seit: 16.01.2002
Beiträge: 1.276
ThiefMaster ist männlich
Bewertung:
Zitat:
Ich verstehs nicht.... scanf hält die ausgabe doch an und liest die eingabe aus stdin und friemelt das in die angegebene variabel.... oder seh ich das falsch? wie verhält sich scanf denn genau?
%c ist ein Zeichen - auch Zeilenumbrüche sind Zeichen. Also liest du bei "x\n" zuerst das x und dann das \n.
Allgemein ist scanf keine wirklich schöne Art und Weise, Benutzereingaben abzufragen.
Zumindest unter unixoiden Systemen ist readline() definitiv komfortabler. Wenn nötig kann man das danach dann natürlich mit sscanf zerlegen, wobei oft ein strcasecmp oder atoi ausreicht.
Dabei seit: 11.01.2003
Beiträge: 652
Herkunft: Marburg Realname: Sebastian
Hanfling ist männlich
Bewertung:
Das Problem mit scanf() ist halt das sich oft davor oder nach noch Zeichen im stdin Stream befinden. Ich mach (in den Fällen wo ich scanf benutze, meist wenn mich wer was bzgl. dessen fragt) das meistens in der Art:
Bei nur einem Zeichen kann man auch gut getchar() benutzen, btw-
__________________ Perl: Eine kryptische Programmiersprache um sich mit Tieren zu Unterhalten.
Langsam nervt das Thead geschließe:
a) Das Gelaber über das Thread schließen ist mehr Spam als man dadurch verhindert.
b) Es nervt, wenn man noch was ergänzen wollte.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Hanfling: 10.11.2009 22:15.