Zum Inhalt springen

getch - aber warum seh ich nix?


Technician

Empfohlene Beiträge

Hallo, ich bin's nochmal...

weil's mir mit der sstream-Headerdatei und den Problemen, die's dadurch gab (siehe letztes Posting) echt irgendwann zu blöd wurde und ich keine Lust hatte, mein Programm nochmal ziemlich komplett umzubauen - wer hätte geahnt, dass das so "tiefgreifend" ist?! - hab ich mich für folgendes entschieden:


#include <iostream>

#include <conio.h>

#include <fstream.h>


void main()

{

ofstream datei;

datei.open("D:\\text.dat",ios::out|ios::nocreate|ios::binary, filebuf::sh_write);


char ReadNow = 'a';

cout<<"eingabe:"<<endl;

while ( ( ReadNow = getch() ) && ( ReadNow != '\r' ) )

{

	datei<<ReadNow;

}


 datei.close();


};


und hinterher greif ich eben direkt auf die Datei zu (ohne Umweg über sstream bzw. string vorher und hinterher).

Eigentlich anders als geplant, aber so komm ich auch ans Ziel.

Nun ist es natürlich noch etwas unschön, dass der Benutzer nicht sieht, was er eintippt (die Zeichen werden zwar in die Datei gelesen, aber während des Tippens nicht auf dem Bildschirm dargestellt).

Das ist sicherlich nur eine kleine Änderung - aber wo liegt mein Fehler? :confused:

Vielen Dank für eure Hilfe!

Grüße,

Technician

P.S.: Hab einen neuen Thread aufgemacht, weil's mit dem anderen eigentlich nix mehr zu tun hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jo mann is doch klar...

getch() liest nur ein zeichen von der Tastatur und zeigt es nicht

an.

Also musst du das eingegebene Zeichen auch ausgeben lassen:

////////////////////////////////////

#include <iostream>

#include <conio.h>

#include <fstream.h>

void main()

{

ofstream datei;

datei.open("D:\\text.dat",ios::out|ios::nocreate|ios::binary, filebuf::sh_write);

char ReadNow = 'a';

cout<<"eingabe:"<<endl;

while ( ( ReadNow = getch() ) && ( ReadNow != '\r' ) )

{

printf("%c", ReadNow);

datei<<ReadNow;

}

datei.close();

};

/////////////////////////////////////////

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von DocMabuse

Hi,

wie wäre es, wenn Du anstatt "getch()" einfach "getche()" benutzt. Das "e" steht, glaube ich, für "echo" und gibt das Zeichen, welches eingegeben wird gleichzeitig auf dem Bildschirm aus.

Grüsse

DocMabuse

Ja... vielleicht war's ja das, was ich noch irgendwie von ferne und verschwommen in Erinnerung hatte...

Wenn das so geht, ist es natürlich besser als getch()!

Gruß,

Technician

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Woodstock

Mit getche() erschient aber nicht der Inhalt der Variablen in der Du die EIngabe gespeichert hast, sonder nur das was Du bei 'cin >>' auch auf dem Bildschirm sehen würdest, nämlich was eingegeben wird, nicht wurde!

Bine

Korrekt, es wird immer das Zeichen angezeigt und gespeichert, welches gerade in dem Moment eingegeben wurde. So wie ich das sehe wird aber auch in eine Variable vom Typ "char" gespeichert, welche sowieso nur ein Zeichen aufnehmen kann. Sehe ich das falsch?

DocMabuse

Link zu diesem Kommentar
Auf anderen Seiten teilen

:confused: Wie jetzt? :confused:

Also die folgende Zeile...

char ReadNow = 'a';

...sieht für mich verdammt nach 'ner Variable vom Typ "char" aus, oder nicht? Sollte ich mich bisher immer geirrt haben? Fällt mein Weltbild tatsächlich in sich zusammen?! :eek: ;)

Bitte um Aufklärung! :) Kann ja sein, dass ich mal wieder auf der Leitung stehe...

DocMabuse

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Daragon

Aber erklär erstmal was du vorhast, aber

bitte keinen Source, sondern bitte

erklären, ich denke dann können wir dir

besser weiter helfen!!!

Danke - funktioniert jetzt alles prima!

getche() hat nicht das gebracht was ich wollte (soll heißen, nach dem ENTER war die Eingabe wieder vom Bildschirm weg) - also mach ich das ganze jetzt mit getch() und geb dann zeichenweise wieder aus.

(Mein ursprüngliches Problem war, einen beliebig langen Text von Tastatur einzulesen und das dann in einer Textdatei oder einer Variablen abzulegen.)

Aber wie gesagt, jetzt funktionierts (und der Thread kann, meinetwegen, auch zugemacht werden).

Danke nochmal für eure Mühe!

Gruß,

Technician

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...