反转字符串的字符。
重要
_mbsrev
和 _mbsrev_l
无法用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
char *_strrev(
char *str
);
wchar_t *_wcsrev(
wchar_t *str
);
unsigned char *_mbsrev(
unsigned char *str
);
unsigned char *_mbsrev_l(
unsigned char *str,
_locale_t locale
);
参数
str
要反转的 null 终止的字符串。
locale
要使用的区域设置。
返回值
返回指向修改后的字符串的指针。 没有保留任何返回值以指示错误。
注解
_strrev
函数反转 str
中字符的顺序。 终止 null 字符保留在原位。 _wcsrev
和 _mbsrev
分别是 _strrev
的宽字符及多字节字符版本。 _wcsrev
的参数和返回值为宽字符字符串。 _mbsrev
的参数和返回值为多字节字符字符串。 对于 _mbsrev
,str
中每个多字节字符中的字节顺序不会更改。 否则这三个函数否则具有相同行为。
_mbsrev
会验证其参数。 如果 string1
或 string2
是 null 指针,则会调用无效的参数处理程序,如参数验证中所述。 如果允许继续执行,则 _mbsrev
返回 NULL
,并将 errno
设置为 EINVAL
。 _strrev
和 _wcsrev
不会验证其参数。
输出值受区域设置的 LC_CTYPE
类别设置的影响。 有关详细信息,请参阅 setlocale
。 这些函数的版本都相同,只是不带 _l
后缀的函数使用当前区域设置,而带有 _l
后缀的函数则使用传入的区域设置参数。 有关详细信息,请参阅 Locale。
重要
这些函数可能容易受到的缓冲区溢出的威胁。 缓冲区溢出可以用于系统攻击,因为它们可能使权限的提升不能确保。 有关详细信息,请参阅避免缓冲区溢出。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
TCHAR.H 例程 | _UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
---|---|---|---|
_tcsrev |
_strrev |
_mbsrev |
_wcsrev |
不适用 | 不适用 | _mbsrev_l |
不适用 |
要求
例程 | 必需的标头 |
---|---|
_strrev |
<string.h> |
_wcsrev |
<string.h> 或 <wchar.h> |
%> | <mbstring.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
// crt_strrev.c
// This program checks a string to see
// whether it is a palindrome: that is, whether
// it reads the same forward and backward.
//
#include <string.h>
#include <stdio.h>
int main( void )
{
char* string = "Able was I ere I saw Elba";
int result;
// Reverse string and compare (ignore case):
result = _stricmp( string, _strrev( _strdup( string ) ) );
if( result == 0 )
printf( "The string \"%s\" is a palindrome\n", string );
else
printf( "The string \"%s\" is not a palindrome\n", string );
}
The string "Able was I ere I saw Elba" is a palindrome
另请参阅
字符串操作
区域设置
多字节字符序列的解释
.- .