欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C Primer Plus--- Chapter 8---Character Input/Output and Input Validation ---1. getchar() 和 putchar()

程序员文章站 2024-03-01 09:01:46
...

C Primer Plus--- Chapter 8---Character Input/Output and Input Validation ---4. getchar 和 putchar

1. getchar()

getchar() 位于 stdio.h 头文件中。C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。

int getchar(void)

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

2. putchar()

C 库函数 int putchar(int char) 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。

int putchar(int char)

该函数以无符号 char 强制转换为 int 的形式返回写入的字符,如果发生错误则返回 EOF。

3. 缓冲区(Buffers)

有如下程序:

/* echo.c -- repeats input */
#include <stdio.h>
int main(void)
{
char ch;
while ((ch = getchar()) != '#')
putchar(ch);
return 0;
}

结果:

Hello, there. I would[enter]
Hello, there. I would
like a #3 bag of potatoes.[enter]
like a

程序分析:
以上程序没有在输入一个字符后立即输出,如:

HHeelllloo,, tthheerree.. II wwoouulldd[enter]

lliikkee aa #

因为,系统采用的是带缓冲的输入,即从键盘输入的数被临时的存放在缓冲区内,知道按 enter 建后,缓冲区的字符才被输送给程序。

这样做既可以节约时间,又可以防止错误的输入。

这种由 enter 触发的形式为 line-buffered I/O,

另一种是 full-buffered I/O,这种往往用于文件的输入输出,当文件内容满了后会输出缓冲区的内容。

上一篇: React的qs插件

下一篇: Chapter 11.7