Comment sprintf un unsigned char?
Cela ne fonctionne pas:
unsigned char foo;
foo = 0x123;
sprintf("the unsigned value is:%c",foo);
J'obtiens cette erreur:
impossible de convertir le paramètre 2 de
'unsigned char' to 'char'
- Êtes-vous sûr que l'erreur n'est pas "impossible de convertir le paramètre 2 de 'unsigned char' to 'char *'?
- Il vous manque un paramètre à sprintf() Le premier paramètre est le tampon de sortie. La deuxième est la chaîne de format. Tous les autres dépendent de la chaîne de format. Si vous voulez juste l'impression std utiliser printf() (note pas de " s " au début).
- Je vous recommande de vérifier pour voir si il
isalnum(..)
et réelle valeur hexadécimale au lieu d'arbitraire, de l'impression de la valeur du caractère. Tous n'ont pas visible les valeurs en hexadécimal comme 0x01.
Vous devez vous connecter pour publier un commentaire.
Utilisation
printf()
formta de la chaîne de%u
:Avant de vous rendre en regardant unsigned caractères à l'origine du problème, prendre un coup d'oeil à cette ligne:
Le premier argument de sprintf est toujours la chaîne de la valeur qui va être imprimé. Cette ligne devrait ressembler à quelque chose comme:
À moins que vous vouliez dire printf au lieu de sprintf.
Après la fixation, vous pouvez utiliser %u dans votre chaîne de format pour afficher la valeur d'un type non signé.
UCHAR_BIT
> 8, par exemple, 16 bits DSP de l'.MODIFIER
snprintf
est un peu plus sûr. C'est au développeur de s'assurer de la bonne taille de la mémoire tampon est utilisée.Essayez ceci :
Je pense que votre confondue avec la façon
sprintf
œuvres. Le premier paramètre est une chaîne de tampon, la seconde est une chaîne de mise en forme, puis les variables que vous voulez à la sortie.Vous ne devez pas utiliser sprintf, car il peut facilement provoquer un dépassement de mémoire tampon.
Vous devriez préférer snprintf (ou _snprintf lors de la programmation avec Microsoft bibliothèque standard C). Si vous avez affecté la mémoire tampon sur la pile dans le local de la fonction, vous pouvez faire:
Les données peuvent être tronqués, mais qui est certainement préférable de débordement de la mémoire tampon.