Considérons une situation: J'ai un tampon de longueur connue qui stocke vraisemblablement une chaîne terminée par zéro et j'ai besoin de connaître la longueur de la chaîne.Existe-t-il une fonction C standard pour calculer la longueur de la chaîne jusqu'à une certaine limite?
Le problème est que si j'utilise strlen()
et la chaîne se révèle être pas nul fin à son programme se heurte à un comportement non défini lors de la lecture au-delà de la fin de la mémoire tampon. Je voudrais donc avoir une fonction comme ce qui suit:
size_t strlenUpTo(char* buffer, size_t limit)
{
size_t count = 0;
while(count < limit && *buffer != 0) {
count++;
buffer++;
}
return count;
}
afin qu'il retourne la longueur de la chaîne, mais ne cherche jamais à lire au-delà de la fin de la mémoire tampon.
Y at-il déjà une telle fonction dans la bibliothèque C ou dois-je utiliser la mienne?
Notez que si votre système n'a pas 'strnlen', vous pouvez utiliser ma réponse comme remplacement. Nommer le remplacement 'strnlen' et s'assurer qu'il a une sémantique identique à la fonction' strnlen' POSIX est probablement plus agréable que de faire une version différemment nommée et possiblement différente. –