Unendliche Schleife nach cin
-
Ich habe schon verschiedene Beiträge darüber gelesen und alles ausprobiert, aber es funktioniert trotzdem nicht,ich hoffe ihr könnt mir helfen.
Das heißt ich kann zwar etwas eingeben aber der Cursor geht einfach nur eine zeile weiter runter.System: Linux x64 (Ubuntu)
int menu(){ char a1[]="ab1c2a"; char a2[]="ab1c2b"; char a3[]="ab1c2c"; char a4[]="ab1c2d"; char a5[]="ab1c2e"; char b1[]="bc1d1a"; char b2[]="bc1d1b"; char b3[]="bc1d1c"; char b4[]="bc1d1d"; char b5[]="bc1d1e"; char b6[]="bc1d1f"; char b7[]="bc1d1g"; char c1[]="cd1e1a"; char c2[]="cd1e1b"; char *args[]={"Anl","qz5ns83","",NULL}; char wahl[10]={0}; bool ok=0; cout<<"\033[2J\033[H"; cout<<"\033]0;MediaCenter\007" <<endl <<"MediaCenter\n" <<endl <<" - Optionen -\n" <<endl <<" \"st\" CMD\n\n" <<" \"dem\" Demo\n\n" <<" \"re\" Rechner\n\n" <<" \"x\" Beenden\n\n" <<"Wahl eingeben: "; cin>>wahl;//HIER!!! if(!strcmp(wahl,"1")){args[2]=a1;ok=1;} if(!strcmp(wahl,"2")){args[2]=a2;ok=1;} if(!strcmp(wahl,"note")){args[2]=b2;ok=1;} if(!strcmp(wahl,"htm")){args[2]=b3;ok=1;} if(!strcmp(wahl,"sh")){args[2]=b4;ok=1;} if(!strcmp(wahl,"cl")){args[2]=b5;ok=1;} if(!strcmp(wahl,"start")){args[2]=b6;ok=1;} if(!strcmp(wahl,"moun1")){args[2]=c1;ok=1;} if(!strcmp(wahl,"moun2")){args[2]=c2;ok=1;} if(!strcmp(wahl,"dis")){} if(!strcmp(wahl,"An")){args[2]=0;ok=1;} if(!strcmp(wahl,"dem")){} if(!strcmp(wahl,"re")){} if(!strcmp(wahl,"del")){args[2]=b7;ok=1;} if(!strcmp(wahl,"x"))return 0; cout<<"schon hier"; if(ok)execv("/home/user/MediaCenter/Anl", args); else{ cout<<"\033[2J\033[H"; menu(); } }
-
Der Code denn du angeben hast reicht nicht aus um denn Fehler zu finden, weil die Schleife fehlt. Außerdem hat dein Code mehr mit C als mit C++ zu tun.
-
Welche Schleife?
Meinst duint main(){ menu(); }
-
Und was für einen Eingabe führt zu einem Fehler?
Du zerschiesst Dir natürlich Speicher, wenn Du mehr als 9 Zeichen eingibst...Kann Sein, dass das zu merkwürdigen Ergebnissen führt. Wenn Dugetline()(member voncin) nimmst kannst Du wenigstens die Maximallänge angeben.
-
Gelöst mit:
cin.clear(); cin.sync(); cin>>wahl;
-
Sol64 schrieb:
Gelöst mit:
cin.clear(); cin.sync(); cin>>wahl;"Gelöst" bedeutet in dem Fall eher "Mit Kaugummi und Tesafilm repariert". Die eigentliche Ursache ist eine andere (vermutlich das Übliche: Fehlende Fehlerbehandlung) und diese Lösung verlässt sich auf nicht-standardisierte Eigenschaften einer einzigen, ganz bestimmten C++-Laufzeitumgebung und wird daher nicht portabel funktionieren. Und du lernst nicht einmal, wie es richtig geht.