Некоторые функции ввода-вывода, описанные в главе 13, имеют реализации, ориентированные на работу с двухбайтовыми символами. Эти функции (они перечислены в табл. 19.2) используют заголовок <wchar.h>. Обратите внимание на то, что функции swprintf() и vswprintf() требуют передачи дополнительного параметра, в котором не нуждаются соответствующие им функции для типа char.
Функция | Соотвествующая функция для типа char |
---|---|
| fgetc() |
| fgets() В версии С99 к параметрам str и stream применен квалификатор restrict |
| fputc() |
| fputs() В версии С99 к параметрам str и stream примененквалификатор restrict |
| fprintf() В версии С99 к параметрам stream и fmt применен квалификатор restrict |
| fscanf() В версии С99 к параметрам stream и fmt применен квалификатор restrict |
| getc() |
| getchar() |
| putc() |
| putchar() |
| sprintf() Обратите внимание на то, что добавлен параметр num который ограничивает количество символов, записываемых в массив str. В версии С99 к параметрам str и fmt применен квалификатор restrict |
| sscanf() В версии С99 к параметрам str и fmt применен квалификатор restrict |
| ungetc() |
| vfprintf() В версии С99 к параметру fmt применен квалификатор restrict |
| vfscanf() (Добавлена в версии С99) |
| vsprintf() Обратите внимание на то, что добавлен параметр num, который ограничивает количество символов, записываемых в массив str. В версии С99 к параметрам str и fmt применен квалификатор restrict |
| vsscanf() (Добавлена в версии С99) |
| vprintf() В версии С99 к параметру fmt применен квалификатор restrict |
| vscanf() (Добавлена в версии С99) |
| printf() В версии С99 к параметру fmt применен квалификатор restrict |
| scanf() В версии С99 к параметру fmt применен квалификатор restrict |
Дополнительно к функциям, показанным в таблице, добавлена следующая функция, ориентированная на работу с двухбайтовыми символами:
int fwide(FILE *stream, int how);
Если значение параметра how положительно, функция fwide() делает поток stream потоком двухбайтовых символов. Если же значение параметра how отрицательно, то функция fwide() превращает поток stream в поток объектов типа char. А если значение how равно нулю, на поток stream никакого воздействия не оказывается. Если этот поток уже был ориентирован либо на двухбайтовые, либо на обычные символы, он изменяться не будет. Функция возвращает положительное значение, если поток рассматривается как содержащий двухбайтовые символы. Отрицательное значение возвращается, если он рассматривается как содержащий символы типа char. В случае, когда поток еще не ориентирован, функция возвращает нуль. Ориентация потока также определяется его первым использованием.