Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » parameterübergabe zeichenkette

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.04.2004, 14:56 Uhr
~cplusplusnoob
Gast


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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.04.2004, 18:06 Uhr
Pablo
Supertux
(Operator)


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!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.04.2004, 19:23 Uhr
~cplusplusnoob
Gast


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
greetz

Dieser Post wurde am 28.04.2004 um 19:33 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.04.2004, 19:38 Uhr
Pablo
Supertux
(Operator)


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!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.04.2004, 19:56 Uhr
~cplusplusnoob
Gast


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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.04.2004, 20:09 Uhr
Pablo
Supertux
(Operator)



C++:
void get_str(char* buffer)
{
    int c;
    do {
        c=getchar();
        stc::cout << (char) c;
        *buffer++=c;
    } while(!isspace(c) || c==EOF || c<0)
     *buffer=0;
     std::cout << endl;
}

void foo()
{
    char uname[30];
    std::cout << "Geben Sie Ihren Benutzernamen ein: ";
    get_str(uname);
    std::cout << "User name: " << uname << std::endl;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.04.2004, 20:24 Uhr
~cplusplusnoob
Gast


Super hat geklappt! Habs bisschen anders geschrieben:

C++:
//Zeichenkette erfassen
void get_string(char *buffer)
{
    char zeichen;
    int i={0};
    do                
    {    
        zeichen=toupper(getch());
        cout << zeichen;
        if (isspace(zeichen)!=0)    
        {
            *buffer++='\0';                        
            break;    
        }
        else
        {
            *buffer++=zeichen;                                          
        }
    }
    while(isspace(zeichen)==0 && i<20);
    
}


Mein Problem lag wohl daran das ich nich wusst wie ich den Pointer richtig
setzen soll.
Ich danke Dir!
greetz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: