gpt4 book ai didi

c - getchar() 和 enter 按钮了解它是如何工作的

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:48 24 4
gpt4 key购买 nike

我已经编写了以下函数(当我正在阅读关于 C 的 Ritchie 书时)以从命令行获取一行。它做了它应该做的事情,我理解它是如何工作的,但我想更深入地挖掘。

int getLine(char arr[], int max) {
int c, i;
for (i = 0; i < max - 1 && (c = getchar())!= EOF && c!= '\n'; ++i) {
arr[i] = c;
}
if(c == '\n') {
arr[i] = c;
}
arr[i+1] = '\0';
return i; /*length without '\n'*/
}

我的问题是关于循环的,假设我们有一个空白的命令行,它正在等待用户输入一些东西,因为在循环中调用了第一个 getchar() ,假设用户输入了以下内容:

h

我猜接下来会发生什么,是 getchar() 将“h”存储在 arr[] 中,而用户实际上没有按下 enter。

所以如果用户继续输入:

hello

'h' 'e' 'l' 'l' 和 'o' 将存储在 arr[] 中,而无需用户实际按下 enter 并且 getchar 将总共被调用 6 次,最后一次在'o'。然后当用户按下回车键时,getchar() 将在 arr[] 中存储 '\n',对吗?这到底是如何工作的?所以我想问题是

getchar() 是否需要 enter 才能执行它的操作?

谢谢

最佳答案

getchar() 在刷新输入之前不会返回任何内容,为此您必须按 Enter/Return 或插入 EOF,在通过按 Ctrl+D 和 Windows 控制台 Ctrl+Z 实现的 linux 终端上。

关于c - getchar() 和 enter 按钮了解它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28509823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com