_strrev, _wcsrev, _mbsrev, _mbsrev_l

反转字符串的字符。

重要

_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 的参数和返回值为多字节字符字符串。 对于 _mbsrevstr 中每个多字节字符中的字节顺序不会更改。 否则这三个函数否则具有相同行为。

_mbsrev 会验证其参数。 如果 string1string2 是 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>
_mbsrev_mbsrev_l <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

另请参阅

字符串操作
区域设置
多字节字符序列的解释
strcpywcscpy_mbscpy
_strset_strset_l_wcsset_wcsset_l_mbsset_mbsset_l