Question

Alors que je travaille, quelque part dans le code, j'ai vu les staements suivants. Je vous sentir désorienté spécificateur de format dans sprintf

   d_number = strtol( tmp_buf , (char **)NULL, 16);
   memset( tmp_buf , ' ' , sizeof( tmp_buf ) );
   sprintf( tmp_buf , "%0.*d" , (int)sizeof( dec_number ) , d_number  );

pourrait expliquer tout le monde s'il vous plaît?

Était-ce utile?

La solution

.* signifie que la précision ne soit pas spécifié dans la chaîne de format, mais comme un argument de la valeur de nombre entier supplémentaire précédant l'argument qui doit être formaté. (D_number)

http://www.cplusplus.com/reference/clibrary/cstdio/ printf /

Autres conseils

Le * est remplacé par (int) sizeof (dec_number). Si dec_number est un int, sur plusieurs machines, il est le même que% 0,4D. Ceci est la précision avec lequel pour imprimer l'entier ou le nombre maximal de chiffres à imprimer.

Le * peut apparaître sur chaque côté du, par exemple "":

sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);

fonctionne aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top