putwc , putwchar 或 fputwc 子例程
用途
将字符或字写入流。
库
标准 I/O 库 (libc.a)
语法
描述
putwc 子例程将 Character 参数指定的宽字符写入 Stream 参数指向的输出流。 宽字符在流的关联文件位置指示符处写为多字节字符 (如果已定义)。 然后子例程推进指示符。 如果文件无法支持定位请求,或者如果以附加方式打开了流,那么会将该字符附加到输出流。
putwchar 子例程的工作方式类似于 putwc 子例程,只是 putwchar 将指定的宽字符写入标准输出。
fputwc 子例程的工作方式与 putwc 子例程相同。
缺省情况下,如果输出流引用文件,那么会对输出流 ( stderr除外) 进行缓冲; 如果输出流引用终端,那么会对输出流进行行缓冲。 缺省情况下,未对标准错误输出流 stderr进行缓冲,但使用 freopen 子例程会使其变为缓冲或行缓冲。 使用 setbuf 子例程来更改流的缓冲策略。
在 fputwc, putwc, fputc. putc, fputs, puts或 putw 子例程成功运行之后,在下次成功完成对同一流上的 fflush 或 fclose 子例程或对 exit 或 abort 子例程的调用之前,会将文件的 st_ctime 和 st_mtime 字段标记为更新。
参数
| 项 | 描述 |
|---|---|
| 字符 | 指定类型为 wint_t的宽字符。 |
| 流 | 指定输出数据流。 |
返回值
成功完成后, putwc, putwchar和 fputwc 子例程将返回所写入的宽字符。 否则,将返回 WEOF 。 设置了流的错误指示符,并且设置了 errno 全局变量以指示错误。
错误代码
如果 putwc, putwchar或 fputwc 子例程由于流未缓冲或需要写入缓冲区中的数据而失败,那么它将返回以下一个或多个错误代码:
| 项 | 描述 |
|---|---|
EAGAIN |
指示为 Stream 参数下的文件描述符设置了 O_NONBLOCK 标志,从而延迟了写操作期间的进程。 |
EBADF |
指示 Stream 参数底层的文件描述符无效,在写操作期间无法更新。 |
EFBIG |
指示进程尝试写入已等于或超过进程的文件大小限制的文件。 该文件是常规文件,已尝试在与相应流相关联的最大偏移量或超出该偏移量时写入该文件。 |
EILSEQ |
指示宽字符代码与有效字符不对应。 |
EINTR |
指示进程接收到终止读操作的信号。 |
EIO |
指示进程正在后台进程组中尝试对其控制终端执行写操作。 设置了 TOSTOP 标志。 进程不会忽略或阻止 SIGTTOU 标志,并且进程的进程组是孤立的。 |
ENOMEM |
存储空间不足。 |
ENOSPC |
指示包含该文件的设备上没有剩余可用空间。 |
ENXIO |
指示请求是由不存在的设备发出的,或者请求超出了设备的能力范围。 |
EPIPE |
指示进程已尝试写入未打开以进行读取的管道或先进先出 (FIFO)。 该进程还将接收到 SIGPIPE 信号。 |