Gude Leutz, ich hoff Ihr könnt mir weiterhelfen schreib bald ne C++ klausur un hab ein riesen Problem. Eine Zeichenkette soll erfasst werden und dann wieder ans "Hauptprogramm" übergeben werden.
Quellcode sieht so aus :
C++:
//Zeichenkette erfassen void get_string(char *cp) { char zeichen,get_string[20],*gs; int i; gs=&get_string[0]; do { zeichen=toupper(getch()); cout << zeichen; if (isspace(zeichen)!=0) { get_string[ i ]='\0'; break; } else { get_string[ i ]=zeichen; i++; } } while(isspace(zeichen)==0 && i<20); *cp=*gs; }
//Dateneingabe void eingabe() { //Abfrage Benutzername cout << "Geben Sie Ihren Benutzername ein:" <<endl; get_string(&username[0]); }
Beim Kompillieren bekomm ich keine Fehlermeldungen allerdings wenn ich bei dem Programm an die Stelle komm wo der Benutzername abgefragt wird schmiert das Programm ab sobald ich eine taste drücke.
Hoff mir kann jmd helfen is bestimmt voll der lächerliche Fehler wenn das ein "Profi" sieht
greetz
Bearbeitung von typecast:
cpp-Tags gesetzt und invertierte Schrift rausgenommen
Dieser Post wurde am 28.04.2004 um 17:50 Uhr von typecast editiert.
Was genau willst du machen? Eine Zeile einlesen? Dann benutze fgets.
in void Eingabe benutzt du username, ist username char* oder char[xxx]? Wo ist sie definiert und deklariert? Jedenfalls brauchst du nur get_strin(username) zu schreiben.
Ich verstehe deine do schleife nicht, wozu machst du get_string[ i ]='\0'; das? -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth!
Was das alles zu bedeuten hat musste mein Lehrer fragen *g* glaub der blickt selbst nich durch... Also deklatiert hab ich alle Variable hab jetzt nich den Kompletten Quellcode hier reingestellt nur den Part wo ich Probleme hab.
Sinn un Zweck der Sache soll sein einzelne Zeichen zu erfassen:
C++:
zeichen=toupper(getch());
welches angezeigt wird:
C++:
cout << zeichen;
Die do-Schleife läuft solang bis man 20 Zeichen eingegeben hat oder ein Zeichen kein wert hat z.B. Return-Taste. Das eingegebene Zeichen wird bei get_string[ i ] an die stelle gesetzt wo der Zähler i gerade steht und der Zähler rückt dann eins weiter:
C++:
get_string[ i ]=zeichen; i++;
Wenn ein zeichen ohne wert kommt wie oben genannt soll die \0 als Abschluss an den string gehängt werden und die Schleife wird unterbrochen:
C++:
get_string[ i ]='\0'; break;
und die zusammengesetzte Zeichenkette soll an das "Hauptprogramm" zurückgegeben werden.
Über Sinn der Sache lässt sich bestimmt streiten Beschwerden an meinen Lehrer Geht darum das wir uns selbst Funktionen schreiben sollen die Aufgaben "erleichtern" sollen und darum wie man Paramenter von Funktionen rückgeben kann. Mein Problem ist halt die Rückgabe einer Zeichenkette greetzDieser Post wurde am 28.04.2004 um 19:33 Uhr von Pablo editiert.
Kannst du mir nochnal, aber ein bisschen klarer, was genau die Funktion tut? Ich verstehe noch ncht ganz. Wenn man z.b. "abc der" eingibt, dann muss man abc lesen und "abc der" auf "abc" umwandeln? -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth!
Kurzfassung Einzelne Zeichen werden zu einer Zeichenkette verknüpft bis entweder 20 Zeichen erreicht sind oder durch die Eingabe eines Zeichens ohne wert (fallen mir nur Return oder Leertaste ein). Also würde die Eingabe "abc der" nicht gehen weil er bei Leertaste die Schleife abbricht. Die Zeichenkette soll dann der Rückgabeparameter sein. greetz