我有两个与getchar()和putchar()有关的问题

维卡斯·维玛(Vikas Verma)
#include<stdio.h>

main()
{
char c;
c=getchar();
putchar(c);

c=getchar();
putchar(c);

c=getchar(); 
putchar(c);

c=getchar();
putchar(c);

c=getchar();
putchar(c);

}

我的第一个问题是,每当我们使用getchar()时,它都会在内存中的某个位置创建一个缓冲区,当我们按Enter键时,getchar()开始从缓冲区读取内容,而getchar()一次只能读取一个字符。因此,在上面的程序中,当执行第一个getchar()时,它将在内存中创建一个缓冲区,并且整行内容将存储在缓冲区中,假设当我按下Enter键时我写了“ vik” getchar()开始从缓冲区中读取内容,然后是“ v”将分配给变量c,然后只有'v'将从缓冲区中清除,因为getchar()一次仅读取单个字符。然后在下一条语句中,putchar(c)在屏幕上打印“ v”。所以现在“ ik”getchar()语句执行它不会再询问用户写东西,因为除非并且直到缓冲区不会完全刷新,否则它不会再询问用户写东西,而是会从缓冲区读取内容。因此这里的“ ik”仍然留在黄油中,因此在第二个getchar()语句中,从缓冲区读取“ i”,然后再次从缓冲区中刷新“ i”,putchar(c)打印“ i”。现在,当第三个getchar()执行时,'k'被留在缓冲区中,从缓冲区中读取'k'并赋值给c,然后'k'也从缓冲区中刷新。此时缓冲区已被完全刷新,缓冲区中没有内容当第四个getchar()将会执行向用户写请求的操作,因为缓冲区中没有内容,所以假设我写为“ as”,然后按回车。现在我的主要问题是,当我给两个内容“ as”时,还有两个getchar()和putchar(c)可以执行,那么为什么只有'a'会在屏幕上打印,为什么还没有's'?

而且,我的第二个问题是,如果说使用getchar()时在内存中创建缓冲区,那么如果使用fflush(stdin)则必须刷新缓冲区。所以根据上面程序中的这个,当我在第一个putchar(c)之后而不是冲洗缓冲区之后fflush(stdin)时它执行并打印与上面程序相同的输出,为什么?

吊床

现在,此时缓冲区已完全刷新,当第4个getchar()将执行请求用户写入内容的操作时,缓冲区中没有内容,因为缓冲区中没有内容,所以让我假设我写“ as”并点击进入。现在我的主要问题是,当我给两个内容“ as”时,还有两个getchar()和putchar(c)可以执行,那么为什么只有'a'会在屏幕上打印,为什么还没有's'?

\n。缓冲区中有。这就是为什么您只能a输入的原因as

而且,我的第二个问题是,如果说使用getchar()时在内存中创建缓冲区,那么如果使用fflush(stdin)则必须刷新缓冲区。所以根据上面程序中的这个,当我在第一个putchar(c)之后而不是冲洗缓冲区之后写fflush(stdin)时,它执行并打印与上面程序相同的输出,为什么?

fflush(stdin)将调用未定义的行为(根据ANSI C标准)。你会得到任何东西。您很不幸,它会输出相同的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有关AJAX的两个问题

来自分类Dev

有关球拍宏的两个问题

来自分类Dev

SQL Server:与UNION ALL和两个Selects有关的问题

来自分类Dev

有关DCGAN的两个问题:数据规范化和假/真实批处理

来自分类Dev

寻找一个或两个与锁定和更新调度有关的节点模块

来自分类Dev

有关IIS和localhost的问题

来自分类Dev

有关Servlet的问题和建议

来自分类Dev

与AsyncTask和FragmentManager有关的问题

来自分类Dev

我有2个关于security()的问题,它们都与较低的时间范围有关

来自分类Dev

我有一个与安装vivaldi有关的问题

来自分类Dev

有关函数子句中两个参数之间差异的简单查询

来自分类Dev

用numpy sum替换与两个变量的函数内的参数有关的for循环

来自分类Dev

包含与Django中两个模型有关的信息

来自分类Dev

如何查询与ManyToMany有关的两个用户的findBy

来自分类Dev

sql:选择有关两个不同表的特定数据

来自分类Dev

两个错误可能与Php PDO有关

来自分类Dev

交换两个div的堆叠顺序(或与此有关的任何对象)

来自分类Dev

如何提取有关r变量的两个最低元素的信息?

来自分类Dev

apt更新有两个失败的索引文件,我在网上找不到有关该做什么的信息

来自分类Dev

有关私有MySQL实例和WordPress的问题

来自分类Dev

有关私有MySQL实例和WordPress的问题

来自分类Dev

在C语言中,与malloc和变量数组声明有关的两个给定代码段之间有什么区别?

来自分类Dev

有关jQuery hover(),setInterval范围和“ this”问题的问题-

来自分类Dev

有关案件的问题

来自分类Dev

有关时代的问题

来自分类Dev

有关效率的问题

来自分类Dev

有关补丁的问题

来自分类Dev

有关if语句的问题

来自分类Dev

与groupedData()有关的问题

Related 相关文章

  1. 1

    有关AJAX的两个问题

  2. 2

    有关球拍宏的两个问题

  3. 3

    SQL Server:与UNION ALL和两个Selects有关的问题

  4. 4

    有关DCGAN的两个问题:数据规范化和假/真实批处理

  5. 5

    寻找一个或两个与锁定和更新调度有关的节点模块

  6. 6

    有关IIS和localhost的问题

  7. 7

    有关Servlet的问题和建议

  8. 8

    与AsyncTask和FragmentManager有关的问题

  9. 9

    我有2个关于security()的问题,它们都与较低的时间范围有关

  10. 10

    我有一个与安装vivaldi有关的问题

  11. 11

    有关函数子句中两个参数之间差异的简单查询

  12. 12

    用numpy sum替换与两个变量的函数内的参数有关的for循环

  13. 13

    包含与Django中两个模型有关的信息

  14. 14

    如何查询与ManyToMany有关的两个用户的findBy

  15. 15

    sql:选择有关两个不同表的特定数据

  16. 16

    两个错误可能与Php PDO有关

  17. 17

    交换两个div的堆叠顺序(或与此有关的任何对象)

  18. 18

    如何提取有关r变量的两个最低元素的信息?

  19. 19

    apt更新有两个失败的索引文件,我在网上找不到有关该做什么的信息

  20. 20

    有关私有MySQL实例和WordPress的问题

  21. 21

    有关私有MySQL实例和WordPress的问题

  22. 22

    在C语言中,与malloc和变量数组声明有关的两个给定代码段之间有什么区别?

  23. 23

    有关jQuery hover(),setInterval范围和“ this”问题的问题-

  24. 24

    有关案件的问题

  25. 25

    有关时代的问题

  26. 26

    有关效率的问题

  27. 27

    有关补丁的问题

  28. 28

    有关if语句的问题

  29. 29

    与groupedData()有关的问题

热门标签

归档