Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Use as seguintes dicas:
Os intervalos de bytes de sequências finais sobrepõem-se ao conjunto de caracteres ASCII muitas vezes. Você pode usar com segurança varreduras bytewise para quaisquer caracteres de controle (menos de 32).
Considere a seguinte linha de código, que pode estar verificando se o último caractere em uma cadeia de caracteres é um caractere de barra invertida:
if ( sz[ strlen( sz ) - 1 ] == '\\' ) // Is last character a '\'? // . . .Como
strlennão reconhece MBCS, ele retorna o número de bytes, não o número de caracteres, em uma cadeia de caracteres multibyte. Além disso, note que em algumas páginas de código (932, por exemplo), '\' (0x5c) é um byte final válido (szé uma string C).Uma solução possível é reescrever o código desta forma:
char *pLast; pLast = _mbsrchr( sz, '\\' ); // find last occurrence of '\' in sz if ( pLast && ( *_mbsinc( pLast ) == '\0' ) ) // . . .Este código usa as funções
_mbsrchrMBCS e_mbsinc. Como essas funções reconhecem MBCS, elas podem distinguir entre um caractere '\' e um byte de trilha '\'. O código executa alguma ação se o último caractere na cadeia de caracteres for nulo ('\0').