web-dev-qa-db-fra.com

Code pour la fonction printf en C

Duplicate possible:
code source des fonctions c/c ++

Je me demandais où je pouvais trouver le code C utilisé pour pouvoir écrire printf ("Hello World!"); dans mon programme C pour savoir qu'il doit imprimer cette chaîne sur STDOUT. J'ai regardé dans <stdio.h>, mais je n'ai pu trouver que son prototype int printf (format const char *, ...), mais pas à quoi il ressemble en interne.

53
Rainer Zufall

Voici la GNU de printf ...] que vous pouvez voir passer dans stdout à vfprintf:

__printf (const char *format, ...)
{
   va_list arg;
   int done;

   va_start (arg, format);
   done = vfprintf (stdout, format, arg);
   va_end (arg);

   return done;
}

Voir ici.

Voici n lien vers vfprintf ... tout le formatage 'magique' se passe ici.

La seule chose qui soit vraiment "différente" de ces fonctions est qu'elles utilisent varargs pour obtenir des arguments dans une liste d'arguments de longueur variable. En dehors de cela, ils ne sont que du C traditionnel (ceci contraste avec l'équivalent de printf de Pascal, qui est implémenté avec un support spécifique dans le compilateur ... du moins c'était de retour dans la journée.)

76
mschaef