Différences printf/puts/write en C

Fermé
maxibgoode Messages postés 423 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 2 septembre 2010 - 25 févr. 2010 à 20:44
maxibgoode Messages postés 423 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 2 septembre 2010 - 26 févr. 2010 à 09:16
Bonjour,
Je voudrais connaitre les différences entre printf, puts et write en C.
Quels sont les inconvénients/avantages de chacun? pourquoi 3 fonctions différentes pour afficher qqchose?
Y a-t-il un ou plusieurs équivalent(s) pour la fonction scanf?

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
25 févr. 2010 à 23:40
Bonjour,
puts(const char *ch) affiche la chaîne ch sur stdout et affiche un '\n' (donc pas besoin de fflush(stdout) pour afficher explicitement.
printf(const char*format, ...) est une fonction beaucoup plus complexe puisqu'elle va interpréter le format (%c, ...) ce qui en fait une fonction à argument variable. Elle permet donc d'afficher des int entre autres (chose que ne fait pas puts).
write est une fonction non ANSI (mais POSIX) est affiche une chaîne sur son descripteur (envoyé en premier argument).

Pour conclure, write est à éviter autant que possible (sauf cas particulier).
Ensuite pour afficher un simple texte (avec un retour chariot), utilise plutôt puts.
Et pour le reste, printf. Mais beaucoup n'utilise pas puts car printf("%s\n","coucou") fait la même chose que puts("coucou"). Et le compilateur effectuera le changement pour optimisation, si optimisation il y a.

Cdlt,
9