Ostatni znak w ciągu
Skorzystaj z następujących porad:
Zakresów bajtów szlak nakładają się w wielu przypadkach zestaw znaków ASCII.Bytewise skanowania można bezpiecznie używać do wszelkich znaków kontrolnych (mniej niż 32).
Rozważmy następujący wiersz kodu, który może być sprawdzanie, jeżeli ostatni znak w ciągu jest znakiem kreski ułamkowej odwróconej:
if ( sz[ strlen( sz ) - 1 ] == '\\' ) // Is last character a '\'? // . . .
Ponieważ strlen nie jest MBCS-aware, zwraca liczbę bajtów, nie liczbę znaków w ciąg wielobajtowy.Ponadto, Uwaga: w niektórych (932, na przykład), strony kodowe ' \' (0x5c) jest nieprawidłowy bajt (sz jest ciągiem C).
Aby ponownie zapisać kod w ten sposób jest możliwe rozwiązanie:
char *pLast; pLast = _mbsrchr( sz, '\\' ); // find last occurrence of '\' in sz if ( pLast && ( *_mbsinc( pLast ) == '\0' ) ) // . . .
W tym przykładzie użyto funkcji MBCS _mbsrchr i _mbsinc.Ponieważ funkcje te są świadomi MBCS, można wyróżnić między ' \' znaków i bajtów szlak "\".Kod wykonuje pewne działania, jeżeli ostatni znak w ciągu jest pusty (\0).