为什么我们使用回车键来终止scanf?

im9ewurl  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(171)

假设我有一个简单的c代码,我被要求输入我的年龄,然后程序会打印出我的答案。当我运行程序时,它会说“输入你的年龄:“然后(使用scanf)等我输入一个数字,比如说40。我按键盘上的4和0键。但是我必须按回车键,以便程序记录我所写的内容并终止scanf。为什么我必须按回车键?为什么不按空格键或shift键?我想scanf(“%d”,&age);会消耗和存储所有的数字,直到它找到一个非数字,然后终止。但是如果我写40 a或4 0而不是40,我仍然需要按回车键才能结束scanf函数,让程序继续。为什么?这只是一个定义,就像当你在谷歌上搜索的时候,你必须在搜索字段中按回车键一样?我希望你能理解我的意思!
如果要我猜的话,我会说这和一个定义有关,但我也不知道,我读了另一个类似问题的答案,但我连一半都不明白。

nhhxz33t

nhhxz33t1#

这与程序完全无关。当你在终端上输入时,有两种模式可以操作:raw模式或cooked模式。在raw模式下,终端驱动程序将在输入字符时将字符发送到stdin。在cooked模式下,它将等待直到看到回车,然后发送整行。Cooked模式还执行其他操作,如解释光标键和其他特殊字符。
默认情况下,您的终端处于熟模式。
这通常是一件好事。如果你输入40作为你的数字,然后意识到你犯了一个错误,应该输入30,在熟模式下,你可以按两次退格键,输入30,当你按回车键时,程序只会看到30。在原始模式下,你必须自己处理退格键,你的程序会看到40<backspace><backspace>30

相关问题