gpt4 book ai didi

c - 输入缓冲区中的最后一个字符 (C)

转载 作者:行者123 更新时间:2023-11-30 15:26:38 24 4
gpt4 key购买 nike

我试图寻找答案,但找不到,希望有人能提供帮助。我有以下代码片段:

#include <stdio.h>
#include <stdlib.h>

int main()
{
char c = '\0';
int error = scanf(" %c", &c);

// The user types now the following: A54fG6

while (error != EOF) {
printf("%c", c);
error = scanf(" %c", &c);
}
return 0;
}

在第一个注释所在的位置,输入缓冲区指向 A。然后进入 while 循环,打印字符“A”,第二个 scanf 将输入缓冲区前进到指向 5。在最后一次迭代之后,当printf 打印 '6' - 第二个 scanf 指向什么字符?

或者换句话说,我如何知道程序何时完成读取当前输入缓冲区,然后在 scanf 提示用户输入更多字符之前执行某些操作?

最佳答案

首先,scanf是一个函数。它指向一些代码,每次调用它时都会运行。不是针对一个角色。

scanf 的输入缓冲区是 stdin(至少在您的情况下),并且在程序运行时打开。每当您调用 scanf 时,它都会尝试从 stdin 读取。如果没有什么可读的,它会要求用户输入一些内容。这就是它的工作原理。

现在,用户可能会引入 EOF 字符,但我认为这不是您想要的。

关于c - 输入缓冲区中的最后一个字符 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318957/

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