Assignation de caractère
Mise à jour : novembre 2007
Dans l'exemple suivant la boucle while analyse une chaîne et copie 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 situé au niveau sz2 à l'emplacement vers lequel pointe sz1, puis incrémente sz1 pour recevoir l'octet suivant. Mais si le caractère suivant dans sz2 est un caractère codé sur deux octets, l'assignation à sz1 copie uniquement le premier octet. Le code suivant utilise une fonction portable pour copier le caractère et une 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 );
}