在这里,我理解为什么putchar()只打印第一个字符'C‘
#include <stdio.h>
main(){
int c;
c = getchar();
putchar(c);
}
output : > Cprograming
> C
但是,当使用while循环时,这些函数的行为正在发生变化。
#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()存储和打印了多个字符..?为什么会发生这种事?
我试着用这种方式练习。
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()。因此,输出屏幕将如下所示
Qwerty
Qwert
我的问题是,
为什么d= getchar();从缓冲区收集字符。为什么它不自己启动一个新的流.?
我的意思是c= getchar();
和
D= getchar();不,不要开始打字。首先检查缓冲区是否还剩一些东西。如果它不只是开始打字。
为什么..?
如果我太傻了,我真的很抱歉。只是个初级程序员。希望你们能理解。
发布于 2021-07-08 02:01:59
只要验证条件保持为真,while循环就会重新执行这些语句。延迟回波输出显示缓冲输入,当输入的字符被累积并存储在称为缓冲区的时间域中。按下键-Enter-使输入字符块对程序可用.
发布于 2021-07-08 01:21:06
Getchar将接受流中的输入,当他这样做时,他不会删除该流。
问题是,他得到一个数据,然后打印,检查,然后进入getchar,然后读取流中的下一个数据。
你自己试试这个
#include <stdio.h>
int main(){
int c;
c = getchar();
while(c <= 50){
putchar(c);
c = getchar();
}
return 0;
}
使用随机数,当他找到一个ascii值大于或等于51的数字时,就会看到它停止。
https://stackoverflow.com/questions/68298620
复制