Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: DOS und Win32-Konsole ::  printf - Ausgabefenster verschwindet sofort!  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9598
Beitrag _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
Beitrag 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
Beitrag _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
Beitrag Chris_ Mitglied 16:38:36 09.09.2010   Titel:              Zitieren

Ok, hatte ich nicht drangedacht :p
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 :D

MfG Chris_
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9598
Beitrag _matze Mitglied 16:48:35 09.09.2010   Titel:              Zitieren

Leider wieder verloren! :p ;)

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
Beitrag 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
Beitrag _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?
C/C++ Forum :: DOS und Win32-Konsole ::  printf - Ausgabefenster verschwindet sofort!  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.