Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么putchar()和getchar()在使用while循环时接受多个字符?

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

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

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

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

output : > Cprograming
         > C

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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
运行
AI代码解释
复制
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
运行
AI代码解释
复制
Qwerty
Qwert

我的问题是,

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

我的意思是c= getchar();

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

为什么..?

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

EN

回答 2

Stack Overflow用户

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

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

票数 0
EN

Stack Overflow用户

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

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

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

你自己试试这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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

复制
相关文章
C/CPP单字符I/O:getchar()和putchar()
程序引入:该程序从键盘读取输入的字符,并把这些字符发送到屏幕。程序使用while循环,当读取到‘#’字符时就停止。
CtrlX
2022/11/14
4630
3.1 C++getchar和putchar
在C语言中用getchar和putchar来输入和输出单个字符,同样在C++中也可以使用这两个函数进行输入输出单个字符。
小林C语言
2020/10/30
4750
c语言中putchar的用法举例_putchar和getchar
getchar() 和 putchar() 是一对字符输入/输出函数. getchar()不带任何参数,他从输入序列中返回下一个字符。例如,下面的语句读取下一个字符输入,并把该字符的值赋给变量ch:
全栈程序员站长
2022/11/02
1.1K0
C++getchar和putchar | 输出love
在C语言中用getchar和putchar来输入和输出单个字符,同样在C++中也可以使用这两个函数进行输入输出单个字符。
用户7886150
2021/02/13
5420
『C语言』getchar() & putchar() 〖input & output〗
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜54»总榜2999🏅 🆔本文由 謓泽 原创 CSDN首发 🙉 如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客💬 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏-『C+1』系列_謓泽的博客-CSDN博客🎓 ✉️我们并非登上我们所选择
謓泽
2022/12/12
6970
『C语言』getchar() & putchar() 〖input & output〗
C语学习之 getchar() putchar()
// 使用getchar() 和puchar()演示 #include "stdafx.h" int main(int argc, char* argv[]) { char a,b,c,d,e; printf("请输入5个字符:\n"); a=getchar(); b=getchar(); c=getchar(); d=getchar(); e=getchar(); putchar(a); putchar(b); putchar(c); putchar(d); putchar(e)
明明如月学长
2021/08/27
1.6K0
c语言getchar在哪个头文件_3.1 C++getchar和putchar
在C语言中用getchar和putchar来输入和输出单个字符,同样在C++中也可以使用这两个函数进行输入输出单个字符。
用户7886150
2021/02/13
6940
Python|While循环和For循环
pass是空语句,它的出现是为了保持程序结构的完整性。pass不做任何事情,一般用作占位符。
算法与编程之美
2020/03/12
3.8K0
C语言 | 用getchar读入两个字符,分别用putchar和printf输出
例48:编写程序,用getchar函数读入两个字符给c1和c2,然后分别用putchar函数和printf函数输出这两个字符。
小林C语言
2020/12/30
2.4K0
C语言 | 用getchar读入两个字符,分别用putchar和printf输出
while和do while循环语句
HTML5学堂:在JS的循环语句当中,for、for-in的确是使用管比较频繁的,但是额外还有两种循环语句,一种是while语句,一种是do-while语句,今天主要讲解这看两种语句,并比较一下它们与for的区别。 学过计算机都会接触到循环,循环有很多种,今天我们就来看看while和do while的区别吧 while语句 语法:while(判断条件){} while循环满足条件后执行大括号内的内容,下面我们来直接看下demo只有当达到条件时累加才会被执行 demo: var sum = 0;//声
HTML5学堂
2018/03/12
2.7K0
while和do while循环语句
语句的含意很简单,它告诉 PHP 只要 while 表达式的值为 TRUE就重复执行嵌套中的循环语句
老雷PHP全栈开发
2020/07/02
2K0
c语言中putchar的用法举例_c语言getchar和gets
当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D)
全栈程序员站长
2022/11/07
1.2K0
c语言中putchar的用法举例_c语言getchar和gets
while循环嵌套while循环
《代码大全》推荐先用伪代码来写框架,从最上层思考可以将抽象能力最大化,不会先陷入任何编程语言的实现细节中,通俗地说就是在蓝图层面解决问题。
不会飞的小鸟
2021/07/30
3.5K0
JavaScript-For 循环和 While 循环
一个for循环会一直重复执行,直到指定的循环条件为fasle。 JavaScript的for循环和Java与C的for循环是很相似的。
WEBING
2019/02/26
1.5K0
JavaScript-For 循环和 While 循环
在Python中,不用while和for循环遍历列表
s1=s.encode(encoding='utf-8').decode('unicode_escape')
用户2337871
2019/07/19
5.5K0
4.1 while和do...while循环
为了让大家有个明确的学习方向,请大家分享给有需要的人,谢谢! 一、while循环 一般形式:while(表达式)语句,其中语句就是循环体 注意:只要循环条件表达式为真(即给定的条件成立),就执行循环
小林C语言
2019/08/19
1K0
计算机小白的成长历程——分支与循环(3)
大家好,很高兴又和各位见面了,经过前面的探讨,我们以及掌握了分支语句——if语句和switch语句,接下来,我们将要开始进行循环语句内容的探讨啦!!!
蒙奇D索隆
2023/10/13
1320
计算机小白的成长历程——分支与循环(3)
[复习]The C Programming Language 2nd 习题集(1.1-1.10)
买不起iPhone4,只能弄了一台iTouch4,想尝试一下iOS上的开发,虽然有monoTouch可用,但是这东西要399美金授权,换成RMB好几千块了,算了,为了省钱,还是老老实实复习C 吧,然后升级到Objective-C。 1.1 在你自己的系统中运行“hello, world”程序。再有意去掉程序中的部分内容,看看会得到什么出错信息。 #include <stdio.h> //虽然默认已经包括了stdio.h,但还是建议加上,以保证代码结构清晰 //main函数总是返回int,虽然这个int不
菩提树下的杨过
2018/01/23
8930
ModelBuilder中的For循环和While循环
现在开始讲迭代器,迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环。说的通俗点就是批量循环处理,简称批处理。
陈南GISer
2021/08/18
4.3K0
上手python之while循环和for循环
在即将完成的案例中,我们需要使用print语句,输出不换行的功能,非常简单,实现方式如下: 
一个风轻云淡
2022/11/15
1.5K0
上手python之while循环和for循环

相似问题

Putchar,getchar,while循环中缺少字符

40

putchar()和getchar()循环解释

415

使用getchar和putchar交换字符

12

getchar()和putchar()

44

getchar和putchar

51
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文