Problem mit "cin"-Eingabe



  • Hallo,

    seit gestern Nachmittag gehört auch meine Wenigkeit zum erlauchten Kreise der C++-Programmierer, wenngleich ich noch mit Kinderkrankheiten in den Kinderschuhen zu kämpfen habe. 😉

    Ich wollte ein kleines Programm mit mehreren Ein- und Ausgaben schreiben. Allerdings ergab sich dabei folgendes Problem:
    Wenn ich im kompillierten Programm etwas eingebe und diese Eingabe mit der [ENTER]-Taste bestätige, schließt sich das Programm einfach wieder.

    Ich meine, gehört zu haben, dass es eben dieses Problem auch unter C gibt, und es sich durch eine einfache Funktion oder einen einfachen Befehl beheben lässt.

    Ich möchte auch nicht ausschließen, dass ich Fehler in den Quellcode eingebaut habe. Zur Überprüfung werde ich ihn hier posten:

    #include <iostream.h>
    
    int main()
    {
           int a, b, c;
    
           cout << "Herzlich willkommen zu einem Programm, das keiner braucht.\n";
           cout << "Dieses Programm wird zwei Zahlen Ihrer Wahl miteinander multiplizieren.\n";
    
           cout << "Geben Sie nun bitte die erste Zahl ein.\n";
           cin >> a;
           cout << "Und nun die zweite.\n";
           cin >> b;
    
           c = a*b;
    
           cout << "Fein gemacht. Das Ergebnis Ihrer Multiplikation ist:" << "c";
    }
    

    Viele Grüße,
    qu0



  • Hallo qu0
    Das kommt daher, dass dein Programm sich sofort wieder beendet, wenn es alle Operationen ausgeführt hat. Dies ist bei dir nach deiner zweiten Eingabe der Fall (Die Multiplikation der Eingaben und die Ausgabe des Ergebnises geht so schnell, dass du es nicht mehr siehst und das Fenster sich danach sofort wieder schließt).

    Um das zu umgehen kannst du das Programm aus der Konsole aufrufen. Dann siehst du auch die letzte Ausgabe.

    //Edit

    Übrigens iostream.h ist so weit ich weiß nicht mehr up-to-date. Verwende lieber iostream im namespace std;

    Statt

    #include <iostream.h>
    
    #include <iostream>
    using namespace std;
    

    Und main() sollte auch einen Return-Wert zurückgeben, schreibe am besten

    return 0;
    

    Caipi



  • Hallo Caipi,

    vielen Dank für deine schnelle Antwort. 🙂

    Ich habe alles editiert und den Quellcode ein weiteres Mal kompilliert und gelinkt, aber dennoch schließt sich das Programm sofort nach dem Ausführen aller Operationen.

    Unter C kann man vor den Rückgabewert der Funktion main() noch die Funktion "getchar ();" setzen, damit sich das PRogramm erst nach Eingabe eines weiteren Buchstabens schließt.
    Unter Cplusplus funktioniert dies allerdings nicht.

    Ich benutze übrings den "Dev-C++"-Compiler von bloodshed.net, in der Version "4.9.9.0".

    Viele Grüße,
    qu0



  • @qu0
    Wirf am Besten mal einen Blick in unsere Konsolen-FAQ. Dort findest du alles was du brauchst.
    http://www.c-plusplus.net/forum/viewtopic.php?t=39328



  • Oje, ich wusste gar nicht, dass es sowas gibt, bzw. wusste nicht, ob sich sowas in diesem Forum finden ließe.
    Das ist mir jetzt wirklich peinlich; Ich bitte vielmals um Entschuldigung. 🙄



  • Problem mit "cin"-Eingabe
    Ich meine, gehört zu haben, dass es eben dieses Problem auch unter C gibt, und es sich durch eine einfache Funktion oder einen einfachen Befehl beheben lässt.

    Ich möchte mal gerne meine Meinung über dieses leidige Problem loswerden.
    Also das ist kein Problem. Wenn man schon eine Konsolenanwendung schreibt dann sollte man die "Konsolenanwendung" auch von der Kommandozeile aufrufen.
    Die beschriebenen "Problemlösungen" sind meiner meinung nach nur dürftige workarounds dafür damit man in der Entwicklungsfase eines Konsolenprogrammes die komfortablen Debug- und Ausführungsfunktionen einer IDE verwenden kann. Im production-code haben sie jedenfalls nichts zu suchen.
    Kurt.



  • Wer bitte, schreibt denn heute Konsolenproggies? Eigentlich nur anfänger, die erst mal die Sprache selber verstehen wollen, oder? Und denen geht es darum, möglichst unproblematisch rumzuprobieren.



  • Ich. Bin ein Fan von ein- ausgabeumleitung. und da stören diese "problemlösungen" 🙂



  • Ich schreib auch Konsolenanwendungen. Man braucht ja nicht für alles eine GUI.

    @Caipi: Gemeinheit, ich nenn mich auch ab und zu "Caipi" 😃

    [edit]:

    #include <conio.h>
    
    getch();
    

    ist auch ne lösung.



  • Hi,

    @ness:
    Muss nicht sein, Server brauchen oft auch keine größere, grafische Oberfläche, da begnügt man sich auch gerne Mal mit Konsolenanwendungen.

    MfG Eisflamme



  • ness schrieb:

    Wer bitte, schreibt denn heute Konsolenproggies? Eigentlich nur anfänger, die erst mal die Sprache selber verstehen wollen, oder? Und denen geht es darum, möglichst unproblematisch rumzuprobieren.

    Vor allem unter Linux sind Konsolenprogramme Gang und Gäbe. Da läuft im Grunde nix ohne....



  • Gehts hier um Linux? Es geht um c++ allgemein. Aber du hast natürlich recht! Unter Linux ist das wirklich sinnlos... (Zumindest wenn man ein ordentliches Programm schreiben will... Aber dem Quelltext nach zu urteilen gehts hier um einen Anfänger der was über c++ allgemein lernen will...)



  • Blackhawk schrieb:

    @Caipi: Gemeinheit, ich nenn mich auch ab und zu "Caipi" 😃

    Tja, sorry aber in diesem Forum heiße ich nun mal so 🙂



  • ness schrieb:

    Gehts hier um Linux? Es geht um c++ allgemein.

    ...weswegen deine vorherige Aussage überlüssig war.



  • Es geht um c++ allgemein

    du weist, was c++ von haus aus kann?



  • ness schrieb:

    Wer bitte, schreibt denn heute Konsolenproggies? Eigentlich nur anfänger, die erst mal die Sprache selber verstehen wollen, oder?

    Krass. Ich würde ja C++ Compilerbauer nicht unbedingt als Anfänger bezeichnen wollen 😉



  • ness schrieb:

    Wer bitte, schreibt denn heute Konsolenproggies? Eigentlich nur anfänger, die erst mal die Sprache selber verstehen wollen, oder? Und denen geht es darum, möglichst unproblematisch rumzuprobieren.

    Klar. Die Entwickler von Tools wie grep, sed und gcc waren Noobs...


Anmelden zum Antworten