字符串中的最后一个字符

使用以下提示:

  • 在许多情况下,尾部字节范围与 ASCII 字符集重叠。 可以安全地对任何控件字符(少于 32 个)使用字节扫描。

  • 请考虑使用以下代码行,检查字符串中的最后一个字符是否为反斜杠字符:

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

    由于 strlen 不支持 MBCS,因此它返回多字节字符串中的字节数,而非字符数。 另请注意,在某些代码页(例如 932)中,'\' (0x5c) 是有效的尾随字节(sz 是 C 字符串)。

    一种解决方案是按如下方式重写代码:

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

    此代码使用 MBCS 函数 _mbsrchr_mbsinc。 由于这些函数支持 MBCS,因此它们可以区分 '\' 字符和尾随字节 '\'。 如果字符串中的最后一个字符为 null ('\0'),则代码将执行一些操作。

另请参阅

MBCS 编程提示
字符赋值