10
votes

problème sprintf_s

J'ai un problème amusant en utilisant cette fonction. Je l'utilise comme suit: xxx

et chaque fois que je reçois une exception. L'exception est tampon à petite. Lorsque j'ai changé le deuxième champ dans la fonction à Tailleof (CBUF) + 1.

Pourquoi dois-je ajouter un si je veux seulement copier 8 octets et j'ai un tableau contenant 8 octets? < / p>

c c++

0 commentaires

3 Réponses :


13
votes

Votre tampon contient 8 places. Votre chaîne contient 8 caractères et un caractère null pour le fermer.


3 commentaires

J'ai donc besoin d'augmenter la taille du tampon de 1?


Oui. 1 est exactement la taille du terminateur null. Dans mon code, j'écris même littéralement Char CBUF [8 + 1] pour souligner le fait que j'ai besoin de place pour ce caractère supplémentaire.


J'ai utilisé char [TIMITEOF ("00000000")] .



1
votes

Toutes les fonctions Sprintf Ajoutez une null pour terminer une chaîne. Donc, dans l'effet de votre chaîne est de 9 caractères. 8 octets de texte et la fin zéro


1 commentaires

J'ai donc besoin d'augmenter la taille du tampon de 1?



2
votes

Votre chaîne nécessitera de terminer «\ 0» et 8 octets de données (00000001) en raison de% 08d. Donc, vous devez tailles comme 9.


0 commentaires