|
|
#include <stdio.h> #include <widec.h>
character-based function | byte-based function | character- and byte-based | |
---|---|---|---|
character I/O | getwc | getc | |
getwchar | getchar | ||
fgetwc | fgetc | ||
ungetwc | ungetc | ||
putwc | putc | ||
putwchar | puhar | ||
fputwc | fputc | ||
string I/O | getws | gets | |
fgetws | fgets | ||
putws | puts | ||
fputws | fputs | ||
formatted I/O | printf | ||
fprintf | |||
sprintf | |||
vprintf | |||
vfprintf | |||
vsprintf | |||
scanf | |||
fscanf | |||
sscanf |
The character-based input and output routines provide the ability to work in units of characters instead of bytes. C programs using these routines can treat all characters from any of the four EUC code sets as the same size by using the wchar_t representation.
getwc returns a value of type wchar_t, which corresponds to the EUC representation of a character read from the input stream. getwc uses the cswidth parameter in the ``character class table'' to determine the width of the character in its EUC form.
putwc transforms a wchar_t character into EUC, and writes it to the named output stream. putwc also uses the cswidth parameter to determine the widths of characters in EUC.
The macros getwchar and putwchar; the functions
fgetwc, fputwc, getws, fgetws,
putws, and fputws; and the format specifications
%wc and %ws of the functions
printf, fprintf, sprintf,
vprintf, vfprintf, vsprintf
[see
fprintf(3S)
for descriptions of all these functions],
scanf, fscanf, and sscanf [see
fscanf(3S)
for
descriptions of all these functions] act as if they had made successive
calls to either getwc or putwc.
The character-based routines use the existing byte-based routines internally, so the buffering scheme is the same.
Any program that uses these routines must include the following header files:
#include <stdio.h> #include <widec.h>