_strrev
, , _wcsrev
_mbsrev
_mbsrev_l
Меняет порядок символов в строке на обратный.
Внимание
Функции _mbsrev
и _mbsrev_l
не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
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
на обратный. Завершающий нуль-символ остается на месте. Функции _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> |
_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
См. также
Обработка строк
Локаль
Интерпретация последовательностей многобайтовых символов
strcpy
, , wcscpy
_mbscpy
_strset
, , _strset_l
_wcsset_l
_wcsset
_mbsset
,_mbsset_l