Wie kann ich den Inhalt einer Struktur in einer Zeile ausgeben?



  • Hallo!

    Ich möchte den Inhalt einer Structur ausgeben. Wie geht das?

    struct person
    {
    	char name[21];
    	char vname[21];
    	int alter;
    	struct person* pNext;
    };
    
    struct person* pTemp = NULL;
    
    printf("%s %s,%d", pTemp->vname,pTemp->name,pTemp->alter);
    

    Wenn ich das so mache werden die einzelnen Elemente untereinander ausgegeben.

    Achja und noch eine kleine Frage: bewirkt dieser Quellcode, dass die Standardeingabe gelöscht wird?

    while (getchar() !='\n');
    

    Und wann sollte man immer die Standardeingabe löschen?

    Besten Dank

    JoeF



  • Ich vermute das deine Inhalte am Ende ein "\n" enthalten.
    Wenn du das löscht kommen sie nacheinander.
    Am bestn geht es so

    if ('\n'==InString[strlen(InString)-1])
    InString[strlen(InString)-1])=0x00;

    Das mit getchar() gelesene Zeichen wir aus dem Eingabestrom entfernt also auch das '\n'

    Du könntest hier aber auch einfach gets benutzen.



  • Hallo!

    Lag also wirklich daran dass noch ein '\n' am Stringende war. Mit den o.g.Zeilen war es dann kein Problem mehr es richtig auszugeben.
    Besten dank.

    Noch mal zu den getchar().

    Wann sollte man den stdin- buffer leeren? Ich habe bislang bemerkt, wenn man mit scanf arbeitet ist es oftmal sinnvoll vorher die o.g. Zeile einzufügen.
    Gibt es noch andere Standardfälle?

    Gruß

    JoeF



  • ich arbeite nicht gerne mit scanf, ich benutze lieber gets und sscanf, wobei ich vorher den String untersuche ob er gültige Daten enthält. schau dir auch atol,atof an



  • Lösung von entelchie

    Versuch mal die Funktionen strtol, strtod

    kabe ich da gefunden

    http://www.c-plusplus.net/forum/viewtopic.php?t=25176



  • ich habe nciht mit scanf gearbeitet, sondern mit fgets!!

    Gruß

    JoeF



  • @JoeF
    Du hast aber von getchar() geredet


Anmelden zum Antworten