_swab
Меняет местами байты.
Синтаксис
void _swab(
char *src,
char *dest,
int n
);
Параметры
src
Данные, которые следует скопировать и поменять местами.
dest
Место хранения для переставленных местами данных.
n
Число байтов, которые следует скопировать и поменять местами.
Возвращаемое значение
Функция swab
не возвращает значение. Функция задает errno
EINVAL
значение, если dest
src
указатель имеет значение NULL или n
меньше нуля, и вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров.
Дополнительные сведения о кодах возврата см. в разделе errno
, _doserrno
_sys_errlist
и _sys_nerr
.
Замечания
Если n
является четным числом, функция _swab
копирует n
байт из src
, меняет местами все соседние пары байтов и сохраняет результат в dest
. Если n
это нечетно, _swab
копирует и переключает первые n
-1 байта src
, а окончательный байт не копируется. Функция _swab
обычно используется для подготовки двоичных данных для передачи на компьютер, который использует другой порядок байтов.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Маршрут | Обязательный заголовок |
---|---|
_swab |
C: stdlib.h> C++: <<cstdlib> или <stdlib.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_swab.c
#include <stdlib.h>
#include <stdio.h>
char from[] = "BADCFEHGJILKNMPORQTSVUXWZY";
char to[] = "...........................";
int main()
{
printf("Before: %s %d bytes\n %s\n\n", from, sizeof(from), to);
_swab(from, to, sizeof(from));
printf("After: %s\n %s\n\n", from, to);
}
Before: BADCFEHGJILKNMPORQTSVUXWZY 27 bytes
...........................
After: BADCFEHGJILKNMPORQTSVUXWZY
ABCDEFGHIJKLMNOPQRSTUVWXYZ.