2010-03-20 6 views

Répondre

7

D'une manière générale, oui, ils sont identiques.

Mais ils ne sont pas de quelques manières nitpicky. La fonction getchar est tapée pour renvoyer int et non char. Ceci est fait de sorte que getchar peut à la fois toutes les valeurs char possibles et en plus des codes d'erreur.

Ainsi, alors que le suivant compile avec bonheur dans la plupart des compilateurs vous êtes essentiellement tronquer loin un message d'erreur

char c = getchar(); 

La fonction scanf, cependant, vous permet d'utiliser un type char directement et sépare le code d'erreur dans la valeur de retour.

+1

Pas de messages d'erreur (comme, pluriel), " seulement "EOF. Mais sinon, c'est correct. Il faut dire aussi que getchar() est beaucoup plus efficace que scanf(), car la librairie n'a pas besoin d'analyser la chaîne de format (et l'éditeur de liens n'a pas besoin de lier dans le gros bloc de code qui est scanf ()). – DevSolar

1

Ils font la même chose ici. Cependant, si vous savez que vous ne faites que des caractères, alors getchar et putchar seront plus efficaces, puisque les variantes printf et scanf devront analyser la chaîne à chaque fois pour déterminer comment traiter votre requête. De plus, ils peuvent être appelés dans une bibliothèque de niveau inférieur, ce qui signifie que vous n'aurez peut-être pas besoin d'associer printf/scanf s'ils ne sont pas nécessaires ailleurs.

Questions connexes