sprintf utilisation avec des %.s
Tout en utilisant sprintf comme ce
sprintf("%.40s",str);
Je veux donner une valeur comme strlen(str) au lieu de 40.Comment dois-je faire? J'ai essayé de remplacer 40 avec strlen(str), ne fonctionne pas. Donner une valeur comme
#define len strlen(str)
et à l'aide de %.len ne marche pas non plus car %.len est utilisé dans les " ".
Si strlen fonctionne pour vous, alors vous avez une chaîne terminée par NULL et que vous n'avez pas besoin de vous soucier d'un numéro à mettre pour %s.Si votre chaîne n'est pas null puis de toute façon, vous obtiendrez de longueur incorrecte.Afin de ne pas résoudre le but.
OriginalL'auteur Iceman | 2012-11-08
Vous devez vous connecter pour publier un commentaire.
Utilisation
*
caractère.Si vous utilisez C99,
snprintf
peut également être adapté.strlen
à unint
, puisque c'est le type d'un*
attend. Sisizeof(size_t) > sizeof(int)
, comme c'est souvent sur les systèmes 64 bits, vous pouvez avoir de sérieux problèmes sans la fonte.Oui, vous avez raison. Fait.
OriginalL'auteur md5
Comme GajananH souligne ce est inutile faisons de notre mieux:
Pour
strlen
de travail,str
doit être NULL.Si
str
est NULL alors:Est juste une complication de:
Qui est lui-même qu'une complication de:
OriginalL'auteur weston
Je ne comprends pas vraiment le point de l'utilisation de
strlen()
. Sistrlen()
qui fonctionne pour vous, cela signifie que votre chaîne est NULL et si la chaîne est terminée par NUL il n'y a pas de réelle utilité de mettre un certain nombre de%s
(Sauf si vous essayez d'utiliser un nombre plus petit que la longueur de la chaîne.Si votre chaîne n'est pas NULL alors
strlen()
va retourner une valeur erronée et en utilisant que pour%s
ne va pas aider.Au lieu de cela, je vous suggère d'utiliser strnlen() avec une limite à la longueur de la chaîne et utiliser la valeur de retour pour
%s
.OriginalL'auteur CCoder