problem mit cin.get



  • Ich hab folgendes Problem. Wenn ich die IP eingebe dann kann ich den text nicht mehr eingeben. er springt einfach drüber.

    #include "iostream.h"
    
    int main(int argc, char* argv[])
    {
    	char text[255],ip[15];		
    
    	cout<<"IP: ";
    	cin.get(ip,15);
    
    	cout<<"Text: ";
    	cin.get(text,255);
    
    	cout<<"\nInhalt des Text: "<<text<<endl;
    	cout<<"IP: "<<ip<<endl;
    	return 0;
    }
    


  • DarkShadow1986 schrieb:

    Ich hab folgendes Problem. Wenn ich die IP eingebe dann kann ich den text nicht mehr eingeben. er springt einfach drüber.

    #include "iostream.h"
    
    int main(int argc, char* argv[])
    {
    	char text[255],ip[15];		
    
    	cout<<"IP: ";
    	cin.get(ip,15);
    	
    	cout<<"Text: ";
    	cin.get(text,255);
    	
    	cout<<"\nInhalt des Text: "<<text<<endl;
    	cout<<"IP: "<<ip<<endl;
    	return 0;
    }
    

    Das liegt daran, dass noch ein '\n' im Puffer steht, nachdem du die IP eingegeben hast. Aufgrund dieses Zeichens, denkt dann das zweite cin.get(), dass du eine leere Eingabe gemacht hast und und es geht direkt weiter.

    Zur Lösung deines Problems schau mal in die Dos und Win32-Konsole FAQ Thread: Automatisches Schließen verhindern.

    Btw:
    In diesem Falle sollte aber ein einfaches cin.clear(); cin.sync(); vor oder nach der Zeile cout << "Text: "; genügen...

    /edit: Übrigens ist iostream.h veraltet. Und außerdem: wo befindet sich denn dein Programm 😮 😉

    Caipi



  • Und außerdem: wo befindet sich denn dein Programm

    wie meinst du das? meinst du das Verzeichnis?



  • er hat nur gefragt weil du

    #include "iostream.h"
    // und nicht
    #include <iostream.h>
    // geschrieben hast
    

    aber wie schon gesagt verwende iostream und nicht iostream.h



  • aso. Naja ich hab das MSVisual Studio 6.0

    Ich hab die suche benutzt (Automatisches Schließen) aber er findet nichts. ich hab das auch mit dem cin.clear(); cin.sync(); benutzt aber er springt trotzdem drüber.



  • jetzt gehts. danke für eure hilfe!!!



  • Ich hab noch eine frage. ich hab in ein beitrag etwas gefunden wie man 2 variablen inhalte in eine zusammen fügen kann aber bei mir schreibt er dann das der inhalt zu lang ist. und es steht auch eine menge blödsin drinnen. wie kann ich den fehler beheben?

    void uebertragen();
    char text[255],ip[15];	
    
    int main(int argc, char* argv[])
    {
    
    	cout<<"IP: ";
    	cin.get(ip,15);
    
    	cin.clear();
    	cin.sync(); 
    
    	cout<<"Text: ";
    	cin.get(text,255);
    
    	cout<<"\nInhalt des Text: "<<text<<endl;
    	cout<<"IP: "<<ip<<endl;
    
    	uebertragen();
    	getchar();
    	return 0;
    }
    
    void uebertragen()
    {
    	char senden[];//279
    	strcat(senden,"net send ");
    	strcat(senden, ip); 
    	strcat(senden, " "); 
    	strcat(senden, text);
    	cout<<senden;
    	system(senden);
    
    }
    


  • solltest vermutlich, wenn du das Array senden am Anfang nicht mit '\0' belegst, nicht "net send" an den bisherigen String anhängen, sondern eher mit strcpy(senden,"net send"); reinkopieren, sonst hängst du net send an Speichermüll an und dein Array ist am Ende zu klein, aber irgendwie hab ich das Gefühl, es is immer noch zu klein. Wenn man davon aus geht, dass eine IP 15 Felder ein nimmt, die Nachricht maximal 255, sind das schon mal 270, dann kommt noch "net send" mit 9, und am Ende '\0' als Terminator der Zeichenkette. Somit sinds schon mal 280



  • danke!!


Anmelden zum Antworten