Quelle est exactement la différence entre les deux?Quand devrais-je utiliser fputs à la place de fprintf?
Répondre
fprintf fait une sortie formatée. C'est-à-dire, il lit et interprète une chaîne de format que vous fournissez et écrit dans le flux de sortie les résultats .
fputs écrit simplement la chaîne que vous fournissez au flux de sortie indiqué.
fputs()
n'a pas besoin d'analyser la chaîne d'entrée pour comprendre que tout ce que vous voulez faire est d'imprimer une chaîne. fprintf()
vous permet de formater au moment de la sortie.
Je peux me tromper, mais fputs est plus sûr si vous voulez imprimer une chaîne contrôlée par l'utilisateur. Il y a beaucoup de posts sur StackOverflow à ce sujet. – Greg0ry
Uhm ... ... puts()
écrit juste une chaîne, tandis que printf()
a un certain nombre d'installations de mise en forme pour plusieurs types de données.
fputs()
http://www.cplusplus.com/reference/clibrary/cstdio/fputs/
fprintf()
http://www.cplusplus.com/reference/clibrary/cstdio/fprintf/
La documentation est utile! Apprenez à le lire, et vous aurez un outil puissant de votre côté.
'puts' /' printf' n'est pas une corrélation exacte avec 'fputs' /' fprintf'. 'puts' ajoute un' '\ n'' à sa sortie, contrairement à toutes les autres fonctions. –
Comme cela a été souligné par d'autres commentateurs (et comme il ressort des docs), la grande différence est que printf
permet le formatage des arguments.
Vous demandez peut-être si les fonctions sont équivalentes si aucun argument supplémentaire n'est passé à printf()
? Eh bien, ils ne le sont pas.
char * str;
FILE * stream;
...
fputs(str,stream); // this is NOT the same as the following line
fprintf(stream,str); // this is probably wrong
Le second est probablement faux, parce que l'argument de chaîne à fprintf()
est toujours une chaîne de formattage: si elle a un caractère « % », il sera interprété comme un prescripteur de formatage.
La forme fonctionnelle équivalente (mais moins directe/efficace/Nice) serait
fprintf(stream,"%s", str);
- 1. Quand devrais-je utiliser perror ("...") et fprintf (stderr, "...")?
- 2. fputs/puts dangereux (en C)?
- 3. Que utiliser à la place de Session?
- 4. Utiliser fprintf sur un socket sous Windows
- 5. printf fprintf
- 6. Utiliser l'API Java à la place FXML
- 7. Utiliser machiniste à la place des appareils
- 8. écho égal fputs (STDout)?
- 9. fputs créant un problème
- 10. fputs GET to curl
- 11. Quand utiliser des expressions lambda à la place d'une clause Where dans LINQ
- 12. Que faut-il utiliser à la place de find_with_ids()?
- 13. Quand devriez-vous utiliser des macros à la place des fonctions intégrées?
- 14. Quel composant dois-je utiliser à la place de listbox?
- 15. En git, quand j'utilise difftool, j'obtiens mergetool à la place
- 16. Génération XML à l'aide de fprintf
- 17. assertion de débogage n'a fprintf
- 18. client Socket en C fputs
- 19. Que puis-je utiliser d'autre à la place de arguments.callee?
- 20. Que utiliser à la place de FileReader for Safari?
- 21. Que utiliser à la place de HTTP_X_XDV dans Diazo?
- 22. Que devrais-je utiliser à la place de AddPort?
- 23. Que devrais-je utiliser à la place de sscanf?
- 24. nodejs - que faut-il utiliser à la place de require.paths?
- 25. que devrais-je utiliser à la place de Directory.SetCurrentDirecory?
- 26. Comment utiliser une structure personnalisée à la place de KeyValuePair?
- 27. Que puis-je utiliser à la place de DOMSubtreeModified?
- 28. quoi utiliser à la place de std :: map :: emplace?
- 29. Ce qu'il faut utiliser à la place de Interlocked.Equals
- 30. Que devrait-on utiliser à la place de l'EntityName.account.ToString() déprécié?
ne pas être un crétin, mais avez-vous vérifié la documentation du [deux] (http: //pubs.opengroup .org/onlinepubs/009695399/functions/printf.html) [functions] (http://pubs.opengroup.org/onlinepubs/009695399/functions/fputs.html)? Une sortie formatée, l'autre génère une chaîne, non formatée, dans le flux. avez-vous une question spécifique? –
Que dit votre manuel de référence C? –
'fputs (s, f)' est fonctionnellement équivalent à 'fprintf (f,"% s ", s)'. Ils compilent tous les deux au même code (un appel à 'fputs') avec des compilateurs d'optimisation modernes. – chqrlie