Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Anfänger-Eingabeproblem - Puffer leeren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
11.08.2006, 19:09 Uhr
~Blubber2063
Gast


Naja Enter ist Enter egal unter welchem Betriebssystem, das ist einfach nur ein Zeichen das von der Tastatur eingelesen wird, es kann sein das das BS diese in Zeilenenden wandelt, wenn dem so ist, ist alles klar, aber mir war bisher eigentlich nur der generelle Unterschied der Zeilendiszplinen zwischen den BS bekannt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
14.08.2006, 10:41 Uhr
0xdeadbeef
Gott
(Operator)


Die Tastatur schickt sowieso keine Buchstaben in der Gegend rum, sondern scancodes. Die werden vom Betriebssystem in keycodes umgewandelt und dann interpretiert, und erst dann kann ein ASCII-Code dabei rauskommen. Wenn du shift oder so drückst, ist das allerdings immer noch nicht der Fall (Es sei denn, du lädst ein merkwürdiges keyboard layout).

Was unter Windows passiert, ist (grob), dass das keyboard beim drücken der return-taste schickt "Scancode 0xfoobar Return-Taste nach unten gedrückt", das System das umsetzt in "keycode 0xbazqux" und den interpretiert als "Ich schreib jetzt \r\n nach stdin". Unter UNIX wird entsprechend \n nach stdin geschickt und unter alten MacOS \r, aber das Prinzip dürfte grob das selbe sein (Sicher sagen kann ichs nur für UNIX, aber es sollte mich sehr wundern, wenn da jemand einen grundsätzlich anderen Mechanismus verwenden sollte).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 14.08.2006 um 10:42 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
14.08.2006, 12:25 Uhr
ao

(Operator)



Zitat von Yadgar:
Für mich ist sowas im Moment noch zu hoch...

Tu dir trotzdem einen Gefallen und lern solche Dinge beizeiten kennen. Die helfen dir enorm weiter, weil sie eine ganze Klasse von Problemen auf einen Schlag aus der Welt schaffen.

Du hast ja nicht gerade den Stress, dass dein Projekt schnellstens fertig werden muss, oder? Also kannst du genausogut mal kurz abbiegen, dir die Sache anlesen und dann, mit neuen Werkzeugen versehen, den Weg wieder aufnehmen. Manchmal ergibt sich daraus auch eine ganz neue Perspektive auf das eigene Projekt.

Außerdem gibt es nichts Frustrierenderes, als einen guten Vorschlag zu machen und nur wenige Minuten später die Antwort "ist mir zu hoch" zu bekommen. Das kommt nämlich rüber wie "ich verstehs nicht und wills auch eigentlich gar nicht".

Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
14.08.2006, 12:29 Uhr
Yadgar



High!

Da bin ich wieder... zwischenzeitlich habe ich versucht, in der Eingabeschleife für die beiden Felder nach jedem cin das \n im Puffer mit getchar(); zu entfernen - das funktioniert auch nicht! Wieso eigentlich nicht?

Sollte ich vielleicht, um ein richtiger Progger zu werden, mehr Progrock hören? Keith, lass schon mal die Hammond warmlaufen, mir ist nach Karelia-Suite zumute...

Nee, aber ernsthaft - eigentlich sollte getchar() nach einem Return doch das Zeilenumbruchszeichen aus dem cout-Stream entfernen - oder habe ich da irgendwas falsch verstanden?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
14.08.2006, 12:51 Uhr
Yadgar



High!


Zitat von ao:
Du hast ja nicht gerade den Stress, dass dein Projekt schnellstens fertig werden muss, oder? Also kannst du genausogut mal kurz abbiegen, dir die Sache anlesen und dann, mit neuen Werkzeugen versehen, den Weg wieder aufnehmen. Manchmal ergibt sich daraus auch eine ganz neue Perspektive auf das eigene Projekt.



Ich stecke hier in einer vom Arbeitsamt gesponserten Umschulung und muss möglichst schnell den Stoff durchbekommen... mein Lernfortschritt wird kontrolliert!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
14.08.2006, 13:14 Uhr
ao

(Operator)



Zitat von Yadgar:
Ich stecke hier in einer vom Arbeitsamt gesponserten Umschulung und muss möglichst schnell den Stoff durchbekommen... mein Lernfortschritt wird kontrolliert!

Ein Grund mehr, Hilfe anzunehmen, wenn sie sich bietet. Wie viele Tage suchst du jetzt schon? Irgendwas gelernt dabei? Abgesehen davon, dass du jetzt zwanzig Varianten kennst, die alle nicht funktionieren?

Man muss nicht zu jedem Problem eine eigene Lösung finden. Manchmal sind fremde Lösungen mindestens genausogut.

Und nicht immer gibt es eine gute Lösung, die dem eigenen Ausbildungsstand entspricht. Dann heißt es dazulernen oder weiterfrickeln. 0xdeadbeef erklärt bestimmt gern, was er sich dabei gedacht hat.

Sorry, wenn das hart klingt. Aber auch das sind Erkenntnisse, die keinem Programmierer erspart bleiben.

Gruß,
ao

Dieser Post wurde am 14.08.2006 um 13:15 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
14.08.2006, 14:38 Uhr
Yadgar



High!


Zitat von ao:
Und nicht immer gibt es eine gute Lösung, die dem eigenen Ausbildungsstand entspricht. Dann heißt es dazulernen oder weiterfrickeln. 0xdeadbeef erklärt bestimmt gern, was er sich dabei gedacht hat.



Hat sich hier jetzt erstmal erübrigt... ich konnte das Problem jetzt doch mit zusätzlichen getchar(); jeweils nach cin lösen... hatte vorhin nicht bedacht, dass aufgrund der Kürze der Felder die Return-Abfrage nach jeweils 20 Ausgabezeilen gar nicht erreicht wurde! Dumm... aber bin leider ein Morgenmuffel, da passiert sowas schon mal.

Dafür machen jetzt die neu definierten Operatoren = und + Schwierigkeiten... mehr dazu im entsprechenden Thread!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: