Справочник по C/C++
Функции ввода вывода двухбайтовых символов

Некоторые функции ввода-вывода, описанные в главе 6, имеют реализации, ориентированные на работу с двухбайтовыми символами. Эти функции (они перечислены в приведенной ниже таблице) используют заголовок . Обратите внимание на то, что функции swprintf() и vswprintf() требуют передачи дополнительного параметра, в котором не нуждаются их char-эквиваленты.

Функция char-эквивалент
wchar_t *fgetws(wchar_t *str, int num, FILE *stream) fgets() В версии С99 к параметрам str и stream применен квалификатор restrict
wint_t fputwc(wchar_t ch, FILE *stream) fputc()
int fputws(const wchar_t *str, FILE *stream) fputs() В версии С99 к параметрам str и stream применен квалификатор restrict
int fwprintf(FILE *stream, const wchar_t *fmt, ...) fprintf() В версии С99 к параметрам stream и fmt применен квалификатор restrict
int fwscanf(FILE *stream, const wchar_t *fmt, ...) fscanf() В версии С99 к параметрам stream и fmt применен квалификатор restrict
wint_t getwc(FILE *stream) getc()
wint_t getwchar(void) getchar()
wint_t putwc(wchar_t ch, FILE *stream) putc()
wint_t putwchar(wchar_t ch) putchar()
int swprintf(wchar_t *str, size_t num, const wchar_t * ftmt, ...) sprintf() Обратите внимание на то, что добавлен параметр num, который ограничивает количество символов, записываемых в массив str. В версии С99 к параметрам str и fmt применен квалификатор restrict
int swscanf(const wchar_t *str, const wchar_t *fmt, ...) sscanf() В версии С99 к параметрам str и fmt применен квалификатор restrict
wint_t ungetwc(wint_t ch, FILE *stream) ungetc()
int vfwprintf(FILE *stream, const wchar_t *fmt, va_list arg) vfprintf() В версии С99 к параметру fmt применен квалификатор restrict
int vfwscanf(FILE * restrict stream, const wchar_t * restrict fmt, va_list arg) vfscanf () (Добавлена в версии С99.)vfprintf() В версии С99 к параметру fmt применен квалификатор restrict
int vswprintf(wchar_t *str, size_t num, const wchar_t *fmt va_list arg) vsprintf() Обратите внимание на то, что добавлен параметр num, который ограничивает количество символов, записываемых в массив str. В версии С99 к параметрам str и fmt применен квалификатор restrict
int vswscanf(const wchar_t * restrict str, const wchar_t * restrict fmt, va_list arg) vsscanf() (Добавлена в версии С99.)
int vwprintf(const wchar_t *fmt, va_list arg) vprintf() В версии С99 к параметру fmt применен квалификатор restrict
int vwscanf(const wchar_t * restrict fmt, va_list arg) vscanf() (Добавлена в версии С99.)
int wprintft(const wchar_t *fmt,...) printf() В версии С99 к параметру fmt применен квалификатор restrict
int wscanf(const wchar_t *fmt,...) scanf() В версии С99 к параметру fmt применен квалификатор restrict

Кроме того, к содержимому приведенной выше таблицы была добавлена следующая функция ввода-вывода символов широкого формата.

int fwide(FILE *stream, int how);

Если значение параметра how положительно, функция fwide() делает поток stream потоком широкоформатных символов. Если же значение параметра how отрицательно, то функция fwide() превращает поток stream в char-поток. А если значение how равно нулю, на поток stream никакого воздействия не оказывается. Если этот поток уже был ориентирован либо на двухбайтовые, либо на обычные символы, он изменяться не будет. Функция возвращает положительное значение, если поток использует символы широкого формата, отрицательное, если он использует символы типа char, и нуль, если поток еще не ориентирован. Ориентация потока также определяется его первым использованием.