Différences printf/puts/write en C

maxibgoode Messages postés 423 Date d'inscription   Statut Membre Dernière intervention   -  
maxibgoode Messages postés 423 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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
maxibgoode Messages postés 423 Date d'inscription   Statut Membre Dernière intervention   76
 
Merci pour cette réponse aussi précise (je n'en demandais pas moins mais d'un seul coup comme ça...).

Mais je me pose alors une nouvelle question si puts est si pratique pourquoi est-il moins connu/utilisé que printf?

Et pourquoi write est-il à éviter? trop contraignant?
1