_strrev、_wcsrev、_mbsrev、_mbsrev_l

反转字符串的字符。

重要

_mbsrev 和 _mbsrev_l 不能用于在 Windows 运行时 中执行应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(CRT 函数不支持使用/ZW)。

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 函数反转在 string 中的字符排序。 终止空字符保持不变。 _wcsrev 和 _mbsrev 是宽字符,属于 _strrev 的多节字字符版本。 参数和 _wcsrev 的返回值是宽字符字符串;_mbsrev 的参数和返回值为多字节字符字符串。 对于 _mbsrev,在 string 中每个多字节字符的字节顺序不变。 否则这三个函数否则具有相同行为。

_mbsrev验证其参数。 如果string1 或 string2是空指针,则会调用无效参数处理程序,正如 参数验证 中所述。 如果允许继续执行, _mbsrev 返回 NULL并设置errno 为 EINVAL。 _strrev 和 _wcsrev 不验证其参数。

输出值受区域设置的 LC_CTYPE 类设置影响;有关更多信息,请参见 setlocale、_wsetlocale。 除了不具有使用当前区域的 _l 后缀以及具有 _l 后缀而不是使用传入的区域参数,这些函数的版本相同。 有关详细信息,请参阅区域设置

安全说明安全说明

这些函数可能容易受到的缓冲区溢出的威胁。缓冲区溢出可以用于系统攻击,因为它们可能使权限的提升不能确保。有关更多信息,请参见避免缓冲区溢出

一般文本例程映射

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 );
}
  

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关详细信息,请参阅平台调用示例

请参见

参考

字符串操作 (CRT)

区域设置

多字节字符序列的解释

strcpy、wcscpy、_mbscpy

_strset、_strset_l、_wcsset、_wcsset_l、_mbsset、_mbsset_l