• # fgets + sscanf

    Posté par . En réponse au message scanf didju.. Évalué à 3.

    Bonjour,

    Ce problème est bien connu en C.
    Il est pratiquement toujours rencontré ce fameux buffer.

    Il y a une façon de faire qui permet de bien contrôler les entrées. Et ainsi d'éviter des problèmes avec le buffer.
    La combinaison des fonctions fgets et sscanf :
    fgets (char * s, int size, FILE * stream)
    sscanf (const char * str, const char * format, ...)

    On lit sur l'entrée standard et on place la chaîne dans une variable.

    fgets(buffer, sizeof(buffer), stdin);


    On scanne cette variable en fonction du résultat souhaité (si il doit être une chaîne, entier, caractère, ...).
    Et on stocke celle ci dans la variable de destination.

    sscanf(buffer, "%s", &vardest);

    Je ne sais pas si c'est la meilleure façon de faire ...
    Mais cela permet d'avoir un bon contrôle sur les dépassements de buffer etc ...