首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么putchar()和getchar()在使用while循环时接受多个字符?

为什么putchar()和getchar()在使用while循环时接受多个字符?
EN

Stack Overflow用户
提问于 2021-07-08 09:03:51
回答 2查看 98关注 0票数 0

在这里,我理解为什么putchar()只打印第一个字符'C‘

代码语言:javascript
代码运行次数:0
运行
复制
#include <stdio.h>
main(){
    int c;
    c = getchar();
    putchar(c);
}

output : > Cprograming
         > C

但是,当使用while循环时,这些函数的行为正在发生变化。

代码语言:javascript
代码运行次数:0
运行
复制
#include <stdio.h>
main(){
    int c;
    c = getchar();
    while(c != 2){
        putchar(c);
        c = getchar();
    }
}

output : > Cprograming
         > Cprograming
         > Bells and Wistles
         > Bells and Wistles
         ...

为什么突然getchar()和putchar()存储和打印了多个字符..?为什么会发生这种事?

我试着用这种方式练习。

代码语言:javascript
代码运行次数:0
运行
复制
int c,d,e,f,g;
    c = getchar();
    putchar(c);
    d = getchar();
    putchar(d);
    e = getchar();
    putchar(e);
    f = getchar();
    putchar(f);
    g = getchar();
    putchar(g);

这是我的假设,程序可能是如何运作的。

从c= getchar()开始,用户输入'Qwerty‘getchar()将这个'Qwerty’逐个存储在一个名为input (抱歉的技术词汇)中,用户点击enter,getchar()从缓冲区返回第一个字符并将其存储到c putchar(c)中,将这个值发送到一个称为输出缓冲区的东西中,现在输出缓冲区中存储了Q。接下来,d= getchar(),现在这个新的getchar()转到输入缓冲区,请求其中存储的顶部字符,并将其返回到'd‘putchar(d),将这个新的d值发送到输出缓冲区,现在输出缓冲区包含'Qw’。

-这会重复,直到我们没有足够的getchar()和putchar(),或者没有字符。

在本例中,

没有足够的getchar() & putchar()。因此,输出屏幕将如下所示

代码语言:javascript
代码运行次数:0
运行
复制
Qwerty
Qwert

我的问题是,

为什么d= getchar();从缓冲区收集字符。为什么它不自己启动一个新的流.?

我的意思是c= getchar();

D= getchar();不,不要开始打字。首先检查缓冲区是否还剩一些东西。如果它不只是开始打字。

为什么..?

如果我太傻了,我真的很抱歉。只是个初级程序员。希望你们能理解。

EN

回答 2

Stack Overflow用户

发布于 2021-07-08 10:01:59

只要验证条件保持为真,while循环就会重新执行这些语句。延迟回波输出显示缓冲输入,当输入的字符被累积并存储在称为缓冲区的时间域中。按下键-Enter-使输入字符块对程序可用.

票数 0
EN

Stack Overflow用户

发布于 2021-07-08 09:21:06

Getchar将接受流中的输入,当他这样做时,他不会删除该流。

问题是,他得到一个数据,然后打印,检查,然后进入getchar,然后读取流中的下一个数据。

你自己试试这个

代码语言:javascript
代码运行次数:0
运行
复制
#include <stdio.h>
int main(){
    int c;
    c = getchar();
    while(c <= 50){
        putchar(c);
        c = getchar();
    }
    return 0;
}

使用随机数,当他找到一个ascii值大于或等于51的数字时,就会看到它停止。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68298620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档