Frage zu meinem Test
-
Der spuckt mir nichts aus.
Wenn du das mit #include <iostream>, das war nur ein Fehler
beim rein kopieren.
Also mein Problem habe ich immer noch.Gruß
-
Gast0815 schrieb:
Hallo
ich habe folgendes Problem, bei meinem kleinem Test soll
eine Eingabe der Tastatur überprüft werden auf ein Schlüsselwort,
das Funktioniert auch aber dann läuft die schleife einfach...Inwieweit funktioniert das auch?
Wird "Gefunden" innerhalb Deiner Schleife ausgegeben oder nicht?
-
Also
ja der entsprechende char wird gefunden, das problem ist einfach nur,
wenn ich zum Beispiel " TeST TEst TEST" eingebe dann spuckt er mir beicout << "Das hast du eingegeben : " << text << endl;nur
TeST aus, dann gehts weiter noch ne runde und es kommt TEst reus und nach der
dritte dann TEST. Das soll aber so nicht sein.
Wenn er den char nicht findet, soll er den input nochmal hinschreiben
und ansonsten auf einen neue Eingabe warte.
Hier noch mal der neue Code.#include <iostream> #include <cstring> using namespace std; int server(char c[]); int main(){ char text[1024]; bool b = true; while(b){ text[0] = '\0'; cout << " Anfang : " << text << '\n'; cout << "Bitte Text eingeben : "; cin >> text; int i = server(text); switch (i){ case 0: cout << "Das hast du eingegeben : " << text << endl; break; case 1: cout << "Log gestartet!" << endl; break; case 2: cout << "Regiestrierung gestartet!" << endl; break; case 3: cout << "Join erfolgreich!" << endl; break; case 4: cout << "ENDE!" << endl; b = false; break; } } return 0; } int server(char c[]) { const char test[] [6]= {"/log" , "/reg" , "/join" , "/quit"}; for(int t = 0;t<=4;t++){ if(strncmp(test[t],c,5) == 0) { cout << "Gefunden : " << test[t] << endl; return t+1; } } return 0; }Danke für die hilfe
-
versuch erstmal
for(int t = 0;t<4;t++){ statt for(int t = 0;t<=4;t++){lg lolo
-
Sorry, hab erst jetzt gesehen was Du da gedreht hast...
schau Dir mal Deine While-Schleife, den Flag (b) und "case 4" an. Ich bin sicher dann kommst Du selbst drauf!
-
sascha_kib schrieb:
Sorry, hab erst jetzt gesehen was Du da gedreht hast...
schau Dir mal Deine While-Schleife, den Flag (b) und "case 4" an. Ich bin sicher dann kommst Du selbst drauf!

-
int i = server(text);Was bekommst Du denn da im Debugger zurück?
-
sascha_kib schrieb:
int i = server(text);Was bekommst Du denn da im Debugger zurück?
0-4???
-
case 4:
cout << "ENDE!" << endl;
b = false;
break;...
-
Hallo zusammen
sascha_kib schrieb:
case 4:
cout << "ENDE!" << endl;
b = false;
break;
...Wenn ich b false entferne komme ich nicht aus der Schleife.
noobLolo schrieb:
sascha_kib schrieb:
int i = server(text);Was bekommst Du denn da im Debugger zurück?
0-4???
Ja 0-4 je nach eingabe.
noobLolo schrieb:
versuch erstmal
for(int t = 0;t<4;t++){ statt for(int t = 0;t<=4;t++){lg lolo
Bringt für mich keinen unterschied, habe es gerade probiert.
Hat noch wer tips ?
Hier nochmal der Output wenn ich TEst TEST eingebe.
Bitte Text eingeben : TEst TEST Das hast du eingegeben : TEst Anfang : Bitte Text eingeben : Das hast du eingegeben : TEST Anfang : Bitte Text eingeben :Gruß
-
Also ich versteh langsam überhaupt nicht mehr was Du eigentlich willst? Ich bin die ganze Zeit davon ausgegangen das Du nicht mehr aus der While-Schleife in main() raus kommst?
Was cin() betrifft, ich hab schon ewig nichts mehr mit Konsole gemacht. Aber soweit ich mich noch erinnere wird von cin() alles was nach dem ersten Leerzeichen kommt ignoriert.
-
schonmal sowas wie cin.getline() probiert???
http://www.cplusplus.com/reference/iostream/istream/getline/
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
ja mit cin.getline habe ich es auch probiert, leider das selbe problem.
Hat noch wer eine idee ?Gruß