fwide(3) задаёт и определяет ориентацию потока FILE

ОБЗОР

#include <wchar.h>


int fwide(FILE *stream, int mode);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

fwide():

_XOPEN_SOURCE >= 500 || _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L;
или cc -std=c99

ОПИСАНИЕ

Если значение mode равно нулю, то функция fwide() определяет текущую ориентацию потока stream. Возвращается положительное значение, если stream ориентирован на широкие символы, то есть ввод/вывод широких символов разрешён, а ввод/вывод обычных символов запрещён. Возвращается отрицательное значение, если stream ориентирован на работу с байтами, то есть разрешён ввод/вывод обычных символов (char), а ввод/вывод широких символов запрещён. Возвращается ноль, если stream пока не имеет ориентации; в этом случае следующая операция ввода/вывода может поменять ориентацию (например, на байтовую, если производится операция ввода/вывода символов, или на широкие символы, если выполняется операция ввода/вывода широких символов).

После того, ориентация потока определена, она не сможет быть изменена и будет действовать до тех пор, пока не закроется поток.

Если значение mode не равно нулю, то функция fwide() сначала попытается установить ориентацию stream (на широкие символы, если mode больше 0, или на байты, если mode меньше 0). Затем возвращается значение, отражающее текущую ориентацию, как указано выше.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функция fwide() возвращает ориентацию потока после возможного её изменения. Возвращаемое положительное значение означает ориентацию на широкие символы. Возвращаемое отрицательное значение означает ориентацию на байты. Возвращаемое значение 0 означает неопределённость.

СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001, POSIX.1-2008, C99.

ЗАМЕЧАНИЯ

Вывод широких символов в поток, ориентированный на байтовые операции, может быть осуществлён с помощью функции fprintf(3) с директивами %lc и %ls.

Вывод символов в поток, ориентированный на операции с широкими символами, может быть осуществлён с помощью функции fwprintf(3) с директивами %c и %s.