Поделиться через


_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