| Autor |
Nachricht |
_matze
Mitglied
Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9598
|
_matze Mitglied
18:07:26 08.09.2010 Titel: |
|
Zitieren |
| Chris_ schrieb: | Du kannst auch schreiben:
| C/C++ Code: | int main()
{
printf("Hallo Welt!");
getchar();
return 0;
} | |
| C/C++ Code: | int main()
{
printf("Hallo Welt!");
getchar();
return 0;
} | |
| C/C++ Code: | int main()
{
printf("Hallo Welt!");
getchar();
return 0;
} | |
Dann schließt sich die Konsole erst nach einem Tastendruck.
MfG Chris_ |
Das funktioniert nur solange, bis man irgendwelche Eingabefunktionen verwendet und dann beim getchar noch irgendwas im Eingabepuffer liegt. Dann wundert man sich plötzlich, dass getchar kaputt ist... |
_________________ Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
|
|
 |
Chris_
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.06.2009
Beiträge: 177
|
Chris_ Mitglied
12:18:19 09.09.2010 Titel: |
|
Zitieren |
| _matze schrieb: | Das funktioniert nur solange, bis man irgendwelche Eingabefunktionen verwendet und dann beim getchar noch irgendwas im Eingabepuffer liegt.
Dann wundert man sich plötzlich, dass getchar kaputt ist...  |
Ja, aber man kann doch vor dem getchar()-Aufruf den Eingabepuffer leeren, oder? |
|
|
|
 |
_matze
Mitglied
Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9598
|
_matze Mitglied
13:03:09 09.09.2010 Titel: |
|
Zitieren |
| Chris_ schrieb: | | _matze schrieb: | Das funktioniert nur solange, bis man irgendwelche Eingabefunktionen verwendet und dann beim getchar noch irgendwas im Eingabepuffer liegt.
Dann wundert man sich plötzlich, dass getchar kaputt ist...  |
Ja, aber man kann doch vor dem getchar()-Aufruf den Eingabepuffer leeren, oder? |
Ja sicher, aber dann solltest du das in deinem Beispiel auch direkt machen, damit er nicht in diese Falle stolpert. Er übernimmt das getchar und geht erst mal davon aus, dass er eine funktionierende Methode gefunden hat, um das Schließen der Konsole zu verhindern. Wieso sollte er annehmen, dass diese nicht unter allen Umständen funktioniert? Mit ein wenig Glück sucht er die Ursache für dasx plötzlich auftretende, direkte Schließen der Konsole überall, nur nicht beim getchar. |
_________________ Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
|
|
 |
Chris_
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.06.2009
Beiträge: 177
|
Chris_ Mitglied
16:38:36 09.09.2010 Titel: |
|
Zitieren |
Ok, hatte ich nicht drangedacht
Also hier noch einmal mit geleertem Eingabepuffer:
| C/C++ Code: | int main()
{
printf("Hallo Welt!");
fflush(stdin);
getchar();
return 0;
} | |
| C/C++ Code: | int main()
{
printf("Hallo Welt!");
fflush(stdin);
getchar();
return 0;
} | |
| C/C++ Code: | int main()
{
printf("Hallo Welt!");
fflush(stdin);
getchar();
return 0;
} | |
Quelle: http://msdn.microsoft.com/en-us/library/9yky46tz%28VS.71%29.aspx
Ich hoffe das passt jetzt so
MfG Chris_ |
|
|
|
 |
_matze
Mitglied
Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9598
|
_matze Mitglied
16:48:35 09.09.2010 Titel: |
|
Zitieren |
Leider wieder verloren!
Das passt zwar für den MS-Compiler, ist aber nicht im Standard definiert, daher sollte man vielleicht lieber zu allgemeingültigen Methoden greifen, die beim nächsten Compiler keine Schwierigkeiten machen. Zu dem Thema gibt es gerade einen aktuellen Thread:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-273534-and-highlight-is-.html |
_________________ Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
|
|
 |
Chris_
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.06.2009
Beiträge: 177
|
Chris_ Mitglied
22:52:35 09.09.2010 Titel: |
|
Zitieren |
Ok, ich geb mich geschlagen |
|
|
|
 |
_matze
Mitglied
Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9598
|
_matze Mitglied
08:07:28 10.09.2010 Titel: |
|
Zitieren |
Dazu will ich noch ergänzend sagen, dass fflush(stdin) ja nicht von Grund auf böse ist. Wenn ich kleine Testprogrämmchen mache, nutze ich es auch manchmal. Es hängt aber vom Compiler ab, ob dies erlaubt ist. Da ich ausschließlich den MS-Compiler nutze, darf ich auch stdin fflushen. Nur sollte man diese Methode nicht hier im Forum als Lösung für das Problem posten, zumal der Threadersteller ja bereits gesagt hat, dass er einen anderen Compiler benutzt. Trotzdem kannst du (genau wie ich) im Visual Studio natürlich gerne fflushen, was das Zeug hält, solange du die nicht vorhandene Portabilität im Auge behältst. |
_________________ Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
|
|
 |