putchar () vs printf () – Y a-t-il une différence?

Je suis actuellement au chapitre 1.5.1 Copie de fichiers et j’ai créé un programme comme celui-ci:

#include  /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } } 

Si je l’ai couru comme ça:

 PS  cc copy-0.c PS ./a Black Black White White Gray Gray 

La sortie est ce que je saisis.

Et voici un programme que j’ai créé à des fins expérimentales:

 #include  /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { printf("%c",c); c = getchar(); } } 

Le résultat est identique, mais existe-t-il une différence entre putchar et printf ?

Quel est le meilleur à utiliser entre les 2?

printf est une fonction d’impression générique qui fonctionne avec 100 spécificateurs de format différents et imprime la chaîne de résultat appropriée. putchar , bon, met un personnage à l’écran. Cela signifie également que c’est probablement beaucoup plus rapide.

Retour à la question: utilisez putchar pour imprimer un seul caractère. Encore une fois, c’est probablement beaucoup plus rapide.

J’ai compilé un exemple en utilisant printf (“a”) avec -S et j’ai obtenu l’appel putchar dans le code de l’assembly. On dirait que quand vous n’avez qu’un seul caractère dans le printf, le compilateur le transforme en putchar (). J’ai fait un autre exemple en utilisant printf (“ab”) et j’ai obtenu l’appel printf, avec la section text dans le registre% edi.

printf vous permet de formater des chaînes de manière compliquée, en substituant des éléments tels que des entiers, des flottants et d’autres chaînes.

getchar et putchar obtenir et mettre des personnages

Je peux dire que printf est plus utile à bien des égards que putchar.

Regardez mieux dans leurs pages de manuel respectives (man 3 printf man 3 putchar) dans le terminal

  1. Putchar: n’imprime qu’un seul caractère à l’écran, comme l’indique la syntaxe.
  2. Printf: ligne printf ou mot à l’écran. Par conséquent, lorsque vous souhaitez afficher un seul caractère à l’écran, utilisez putchar. Pour lire une chaîne, utilisez la fonction Pour afficher une chaîne de caractères, vous pouvez utiliser les méthodes putting () ou printf.

La différence est que putchar imprime un caractère alors que printf peut en imprimer beaucoup plus.

 printf("%s\n", "this is a lot longer than one character"); 

Généralement, lorsque vous imprimez quelque chose sur le terminal, vous souhaitez le terminer par un caractère de nouvelle ligne, '\n' . À tout le moins pour cette raison, je suggérerais d’utiliser printf car vous pouvez écrire

 printf("%c\n", c); 

au lieu de

 putchar(c); putchar('\n');