Compartilhar via


Último caractere em uma cadeia de caracteres

Use as dicas a seguir:

  • Intervalos de bytes de trilha se sobrepõem ao conjunto de caracteres ASCII em muitos casos. Você pode usar verificações de bytes com segurança 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 strlen não tem reconhecimento de MBCS, ele retorna o número de bytes, não o número de caracteres, em uma cadeia de caracteres multibyte. Além disso, observe que em algumas páginas de código (932, por exemplo), '\' (0x5c) é um byte de trilha válido (sz é uma cadeia de caracteres 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' ) )
        // . . .
    

    Esse código usa as funções _mbsrchr MBCS e _mbsinc. Como essas funções têm reconhecimento de MBCS, elas podem distinguir entre um caractere '\' e um byte de trilha '\'. O código executará alguma ação se o último caractere na cadeia de caracteres for nulo ('\0').

Confira também

Dicas de programação do MBCS
Atribuição de caractere