Dernier caractère d'une chaîne
Mise à jour : novembre 2007
Utilisez les conseils suivants :
Dans de nombreux cas, les plages des octets de queue se superposent sur le jeu de caractères ASCII. Vous pouvez en toute sécurité utiliser des analyses au niveau de l'octet pour les caractères de contrôle (inférieur à 32).
La ligne de code suivante peut contrôler si le dernier caractère d'une chaîne est une barre oblique inverse :
if ( sz[ strlen( sz ) - 1 ] == '\\' ) // Is last character a '\'? // . . .
Dans la mesure où strlen n'est pas compatible MBCS, il retourne le nombre d'octets (et non le nombre de caractères) d'une chaîne multioctets. Il est à noter que dans certaines pages de codes (932, par exemple), '\' (0x5c) est un octet de queue valide (sz est une chaîne C).
Vous pouvez réécrire le code de la façon suivante :
char *pLast; pLast = _mbsrchr( sz, '\\' ); // find last occurrence of '\' in sz if ( pLast && ( *_mbsinc( pLast ) == '\0' ) ) // . . .
Ce code utilise les fonctions MBCS _mbsrchr et _mbsinc. Dans la mesure où ces fonctions sont compatibles MBCS, elles peuvent faire la différence entre un caractère « \ » et un octet de queue « \ ». Le code exécute une action si le dernier caractère de la chaîne est null ('\0').