Assignation de caractère
Prenons l’exemple suivant, dans lequel la while
boucle analyse une chaîne, en copiant tous les caractères à l’exception de « X » dans une autre chaîne :
while( *sz2 )
{
if( *sz2 != 'X' )
*sz1++ = *sz2++;
else
sz2++;
}
Le code copie l’octet à sz2
l’emplacement pointé par sz1
, puis incrémente sz1
pour recevoir l’octet suivant. Toutefois, si le caractère suivant est sz2
un caractère double octet, l’affectation pour sz1
copier uniquement le premier octet. Le code suivant utilise une fonction portable pour copier le caractère en toute sécurité et un autre pour incrémenter sz1
et sz2
correctement :
while( *sz2 )
{
if( *sz2 != 'X' )
{
_mbscpy_s( sz1, 1, sz2 );
sz1 = _mbsinc( sz1 );
sz2 = _mbsinc( sz2 );
}
else
sz2 = _mbsinc( sz2 );
}