面试题答案
一键面试1. getchar()和putchar()与缓冲区的区别
- getchar():
- 从缓冲区读取:getchar()函数从标准输入缓冲区读取一个字符。如果缓冲区中有数据,它会直接从缓冲区获取字符,而不会等待用户再次输入。只有当缓冲区为空时,才会阻塞等待用户输入,直到用户按下回车键,输入的内容才会被送入缓冲区,getchar()再从缓冲区读取字符。
- 处理方式:它每次读取一个字符,读取后,缓冲区指针会移动到下一个字符位置。
- putchar():
- 向缓冲区写入:putchar()函数将一个字符写入到标准输出缓冲区。通常情况下,输出缓冲区会在缓冲区满、遇到换行符(
\n
)或程序结束时,才将缓冲区中的内容真正输出到屏幕上。 - 处理方式:每次向缓冲区写入一个字符。
- 向缓冲区写入:putchar()函数将一个字符写入到标准输出缓冲区。通常情况下,输出缓冲区会在缓冲区满、遇到换行符(
2. 利用区别实现特定输入输出场景示例
#include <stdio.h>
int main() {
char ch;
// 利用getchar()从缓冲区读取字符,直到遇到换行符
printf("请输入一行字符:\n");
while ((ch = getchar()) != '\n') {
// 利用putchar()将读取的字符写入到输出缓冲区并输出,但可以在写入前进行处理
if (ch >= 'a' && ch <= 'z') {
ch = ch - 'a' + 'A';
}
putchar(ch);
}
// 手动添加换行符,确保缓冲区内容输出
putchar('\n');
return 0;
}
在上述示例中:
- getchar()的应用:在
while
循环中,getchar()
从标准输入缓冲区读取字符,循环持续到读取到换行符,体现了getchar()
从缓冲区读取字符的特性。 - putchar()的应用:
putchar()
将处理后的字符写入到标准输出缓冲区。如果读取到的是小写字母,将其转换为大写字母后输出。最后手动添加'\n'
确保缓冲区内容输出,体现了putchar()
向缓冲区写入以及缓冲区的输出机制。