Último carácter de una cadena

Utilice las sugerencias siguientes:

  • Los intervalos de bytes finales y el juego de caracteres ASCII se superponen en muchos casos.Se pueden utilizar de forma segura búsquedas byte a byte para cualquier carácter de control (menor que 32).

  • Observe la siguiente línea de código, que podría estar comprobando si el último carácter de una cadena es un carácter de barra inversa:

    if ( sz[ strlen( sz ) - 1 ] == '\\' )    // Is last character a '\'?
        // . . .
    

    Como strlen no está preparado para MBCS, se devuelve el número de bytes, no el número de caracteres, en una cadena multibyte.También conviene tener en cuenta que, en algunas páginas de códigos (932, por ejemplo), '\' (0x5c) es un byte final válido (sz es una cadena de C).

    Una posible solución consiste en volver a crear el código del modo siguiente:

    char *pLast;
    pLast = _mbsrchr( sz, '\\' );    // find last occurrence of '\' in sz
    if ( pLast && ( *_mbsinc( pLast ) == '\0' ) )
        // . . .
    

    Este código utiliza las funciones MBCS _mbsrchr y _mbsinc.Dado que estas funciones están preparadas para MBCS, pueden distinguir entre un carácter '\' y un byte final '\'.El código realiza alguna acción si el último carácter de la cadena es un valor nulo ('\0').

Vea también

Conceptos

Sugerencias de programación para MBCS

Asignación de caracteres