为什么以下代码在C,Python中给出不同的输出?

德布塔努·古普塔(Debtanu Gupta)

我想在Unix中实现$ cat的输入接收过程。在无限循环内,每当我按任意键时,就会在屏幕上打印相应的字母。如果按ctrl + d,循环将终止。

此TurboC代码正是我想要的:

#include<stdio.h>
#include<conio.h>
void main()
{
 char ch;
 while(1)
 {
  ch=getch();
  if(ch==4)
   break;
  else
   printf("%c",ch);
 }
}

但是,每当我使用Python3时,都会产生问题。

from msvcrt import getch
while True:
    ch=getch()
    if ord(ch)==4:break
    else: print(ch.decode(), end="")

当程序处于无限循环中时,它不打印任何内容,但我按的是键。最后,当我按ctrl + d时,所有以前输入的字符将一起打印。

如何在Python中实现呢?

德米特里·库兹米诺夫(Dmitry Kuzminov)

问题在于,除非您使用@AlbinPaulsys.stdout.flush()print(ch.decode(), end="", flush=True)按@AlbinPaul的建议进行刷新,否则Python中的输出将被缓冲如果您使用std::cout而不是,可能会遇到C ++的相同问题printf其背后的想法是每个输入/输出操作都非常昂贵,因此如果立即将每个字符一个一地输出到输出设备中,则会发现性能下降。将输出保留在内存中并仅不时刷新此累积的输出要便宜得多,因此大多数高级语言都选择缓冲输出。

如果您需要实时交互(例如您的情况),有时这种缓冲可能会带来问题。另一个可能臭名昭著的问题是竞争性编程:不要忘记刷新输出,否则会达到时间限制。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么以下代码给出此输出?

来自分类Dev

为什么以下代码在C ++中是非法的

来自分类Dev

为什么以下C语言代码给出此输出?

来自分类Dev

为什么我在以下代码中使用的相同 Magic 方法生成的输出与预期不同

来自分类Dev

以下代码段的输出是什么,为什么?

来自分类Dev

以下代码的输出是什么,为什么?

来自分类Dev

以下代码在C中做什么?

来自分类Dev

为什么我将nan作为以下代码的输出?

来自分类Dev

为什么以下代码的输出是 x=0 x=20?

来自分类Dev

为什么以下代码会有不同的结果?

来自分类Dev

为什么在以下代码中没有得到任何输出?

来自分类Dev

在CSS中编写以下代码时,为什么输出没有变化?

来自分类Dev

c ++中的预处理程序指令:以下代码的输出是什么?

来自分类Dev

Sailsjs:以下代码中为什么不使用* return *?

来自分类Dev

为什么在以下代码中得到NullPointerException?

来自分类Dev

为什么在python中运行以下代码片段时会打印20

来自分类Dev

为什么以下代码无法解析?

来自分类Dev

为什么以下代码会运行?

来自分类Dev

为什么以下代码无法编译?

来自分类Dev

为什么以下代码显示错误?

来自分类Dev

为什么以下代码不终止?

来自分类Dev

为什么以下代码没有给出大约0.75的返回概率?

来自分类Dev

以下代码中的错误是什么?(Python 2.7,矩阵)

来自分类Dev

以下代码中的错误是什么?(Python 2.7,矩阵)

来自分类Dev

为什么我的代码仅通过注释c ++中的单个打印cout语句来给出不同的输出?

来自分类Dev

为什么我的C ++代码在ideone和Codeforces自定义测试中给出2个不同的输出?

来自分类Dev

java条件运算符,为什么以下代码将输出设为true?

来自分类Dev

为什么在以下代码的每个输出之后都得到32767?

来自分类Dev

为什么我没有得到以下代码的输出需要解释?

Related 相关文章

  1. 1

    为什么以下代码给出此输出?

  2. 2

    为什么以下代码在C ++中是非法的

  3. 3

    为什么以下C语言代码给出此输出?

  4. 4

    为什么我在以下代码中使用的相同 Magic 方法生成的输出与预期不同

  5. 5

    以下代码段的输出是什么,为什么?

  6. 6

    以下代码的输出是什么,为什么?

  7. 7

    以下代码在C中做什么?

  8. 8

    为什么我将nan作为以下代码的输出?

  9. 9

    为什么以下代码的输出是 x=0 x=20?

  10. 10

    为什么以下代码会有不同的结果?

  11. 11

    为什么在以下代码中没有得到任何输出?

  12. 12

    在CSS中编写以下代码时,为什么输出没有变化?

  13. 13

    c ++中的预处理程序指令:以下代码的输出是什么?

  14. 14

    Sailsjs:以下代码中为什么不使用* return *?

  15. 15

    为什么在以下代码中得到NullPointerException?

  16. 16

    为什么在python中运行以下代码片段时会打印20

  17. 17

    为什么以下代码无法解析?

  18. 18

    为什么以下代码会运行?

  19. 19

    为什么以下代码无法编译?

  20. 20

    为什么以下代码显示错误?

  21. 21

    为什么以下代码不终止?

  22. 22

    为什么以下代码没有给出大约0.75的返回概率?

  23. 23

    以下代码中的错误是什么?(Python 2.7,矩阵)

  24. 24

    以下代码中的错误是什么?(Python 2.7,矩阵)

  25. 25

    为什么我的代码仅通过注释c ++中的单个打印cout语句来给出不同的输出?

  26. 26

    为什么我的C ++代码在ideone和Codeforces自定义测试中给出2个不同的输出?

  27. 27

    java条件运算符,为什么以下代码将输出设为true?

  28. 28

    为什么在以下代码的每个输出之后都得到32767?

  29. 29

    为什么我没有得到以下代码的输出需要解释?

热门标签

归档