frage zu fgets() und sscanf()



  • hi,
    ich habe hier mal eine schöne hilfsfunktion für das einscannen von user eingaben gesehen, und für mein programm übernommen (thx an dieser stelle) :

    int scanS(char *saveInto){
    
    	char buffer[1024];
    	fgets(buffer,1024,stdin);
    	sscanf(buffer,"%s",saveInto);
    	return 0;
    }
    

    allerdings versteh ich es nicht komplett: wieso wird nach fgets() noch ein anschliessendes sscanf() gemacht?

    ist das nötig?

    laut manpage schliesst doch fgets() auch schon den string mit '\0' ab.

    wieso also nicht nur:

    int scanS(char *saveInto){
    
    	fgets(saveInto,1024,stdin);
    	return 0;
    }
    

    wofür dann erst über fgets() in einen puffer schreiben, und aus dem dann mit sscnaf() in die tatsächliche variable?

    vielen danke 🙂



  • macht hier in der tat irgendwie nicht viel sinn.
    das lästige newline hat man dann auch noch im puffer.

    anders ist es, wenn du in einer eigabe zeichenketten und zahlen erwartest.

    z.b:
    int i,j,k;

    char str[1024]
    fgets(buffer,1024,stdin);
    sscanf(buffer,"%s %d %d %d", str, &i, &j, &k );

    hier sollte man auch noch die rückgabe von sscanf, also die anzahl der umgewandelten felder checken.


Anmelden zum Antworten