Poslední znak v řetězci
Postupujte následovně:
Rozsahy posledního bajtu přesahují znakový standard ASCII v mnoha případech. Můžete bezpečně použít prohledávání po bajtech pro libovolné řídící znaky (menší než 32).
Zvažte následující řádek kódu, který může kontrolovat, zda poslední znak v řetězeci je znak zpětného lomítka:
if ( sz[ strlen( sz ) - 1 ] == '\\' ) // Is last character a '\'? // . . .
Protože strlen nepodporuje znakovou sadu MBCS, vrátí počet bajtů, nikoli počet znaků ve vícebajtovém řetězeci. Také si všimněte, že v některých znakových stránkách (například 932) je "\" (0x5c) poslední platný bajt (sz je řetězec C).
Jedním z možných řešení je přepsání kódu tímto způsobem:
char *pLast; pLast = _mbsrchr( sz, '\\' ); // find last occurrence of '\' in sz if ( pLast && ( *_mbsinc( pLast ) == '\0' ) ) // . . .
Tento kód používá funkce znakové sady MBCS _mbsrchr a _mbsinc. Vzhledem k tomu, že tyto funkce nepodporují znakovou sadu MBCS, lze rozlišit mezi znakem "\" a posledním bajtem "\". Kód provede určitou akci, pokud je poslední znak v řetězci null ('\0).