Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit "gets()"

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
22.08.2005, 22:14 Uhr
~gast
Gast


Hi Leute,
hab da mal ne Frage.
Ich versuch in meinem Programm ne Zeichenkette mittels gets() einzulesen.
Mein Problem ist, dass bei der Ausführung des Programms die gets() anweisung einfach übersprungen wird:


C++:
void TelList::putData(void)
{

        char name[80];
        cout << "Geben Sie den Namen ein: ";
        gets(name);        // Wird übersprungen
        strcpy(Tel[count].name, name);

        unsigned int number = 0;
        cout << "Geben Sie die Nummer ein: "; // Hiermit gehts dann weiter
        cin  >> number;
        Tel[count].number = number;
                          ...



Zur Info:
Ich rufe die Funktion putData() aus einem Menü auf, welches ich so gemacht habe:



C++:

void menu(void)
{
    bool status = true;

    while(status)
    {

        cout << "Willkommen bei Tous Telefonbuch!\n"
             << "Wählen Sie die Funktion!\n\n";

        cout << "\t1    Neuer Eintrag\n"
                        << "\t2    Suchen\n"
               << "\t3    Ende\n";
        
        int user = 0;
        cin  >> user;



        switch(user)
        {
            case 1:        MyList.putData();
                    break;    

            case 2:        cout << "Geben Sie den zu suchenden
                                                                             Namen ein: "
;
                    char name[80];
                    gets(name);
                    MyList.seek(name);
                    break;

            case 3:        status = false;
                    break;
        }
    }
}



Kann das vielleicht daran liegen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.08.2005, 22:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hau das noch rein:


C++:
void fflushin()
{
  int c;
  while((c = getc(stdin)) != EOF)
    if(c == '\n') break;
}




und dann z.b:


C++:
void TelList::putData(void)
{
  fflushin();
  
        char name[80];
  //...


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.08.2005, 23:59 Uhr
~rene1
Gast


hab leider keine docu zu gets gefunden,
aber wenn da keine syncronisation stattfindet
also z.B. nicht auf ein newline gewartet wird ist es sehr wahrscheinlich das duj ncihts von der function zurück kriegst
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.08.2005, 09:16 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich schätze mal das er das überspringt weil noch daten vom "cin >> ..." im stdin liegen, deshalb das fflushin
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.08.2005, 09:23 Uhr
virtual
Sexiest Bit alive
(Operator)


Naja, aber man sollte nicht C Stdio und C++ Streams so dolle mischen, also dann schon eher cin.ignore verwenden.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.08.2005, 09:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja da er eh schon mischt er könnte ja auch statt gets cin.getline nutzen
--
class God : public ChuckNorris { };
 
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: