MST

星途 面试题库

面试题:C语言中getchar()和putchar()在缓冲区处理上的区别

在C语言中,getchar()和putchar()函数与缓冲区密切相关。请详细阐述这两个函数在处理缓冲区方面的具体区别,并且举例说明如何利用这种区别来实现特定的输入输出场景。
26.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

1. getchar()和putchar()与缓冲区的区别

  • getchar()
    • 从缓冲区读取:getchar()函数从标准输入缓冲区读取一个字符。如果缓冲区中有数据,它会直接从缓冲区获取字符,而不会等待用户再次输入。只有当缓冲区为空时,才会阻塞等待用户输入,直到用户按下回车键,输入的内容才会被送入缓冲区,getchar()再从缓冲区读取字符。
    • 处理方式:它每次读取一个字符,读取后,缓冲区指针会移动到下一个字符位置。
  • putchar()
    • 向缓冲区写入:putchar()函数将一个字符写入到标准输出缓冲区。通常情况下,输出缓冲区会在缓冲区满、遇到换行符(\n)或程序结束时,才将缓冲区中的内容真正输出到屏幕上。
    • 处理方式:每次向缓冲区写入一个字符。

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()向缓冲区写入以及缓冲区的输出机制。