强制在scanf中清除缓冲区

黑暗领袖

我在程序中有scanf和输入缓冲区有问题。

首先我请用户输入:

char someVariable;
printf("Enter text: ");
scanf(" %c",&someVariable);

然后我有一个循环,一次在scanf中遍历输入一个字符,直到达到\ n。问题是在完成循环后,缓冲区中仍然会有某些东西,因此该函数(在循环中被调用)再次被调用,并破坏了程序中的逻辑。

如何强制清除输入缓冲区?

我只能使用scanf(分配要求)

void checkType(){
    char userInput;
    char tempCheckInput;
    printf("Enter Text: ");
    scanf(" %c",&userInput);
    while (userInput != '\n'){

        tempCheckInput = userInput;
        scanf("%c",&userInput);

忽略循环的结尾,这就是我得到输入的部分

chux-恢复莫妮卡

如何强制清除输入缓冲区?

在C中,无法清除(如)stdin(以标准方式),如“删除到该时间点的所有输入”一样。

取而代之的是,输入可以消耗并折腾(类似于“清除”)输入,直到达到数据条件为止。

通常的方法是

int consume_rest_of_line(void) {
  int ch;
  while ((ch = getchar()) != '\n' && ch != EOF) {
    ;
  }
}

如果限于 scanf()

int consume_rest_of_line(void) {
  char ch;
  while (scanf("%c", &ch) == 1 && ch != '\n') {
    ;
  }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么时候需要清除scanf缓冲区?

来自分类Dev

scanf读取后输入缓冲区是否被清除?

来自分类Dev

Python中的Memset(),清除缓冲区

来自分类Dev

Python中的Memset(),清除缓冲区

来自分类Dev

在缓冲区中强制转换指针

来自分类Dev

清除键盘缓冲区

来自分类Dev

在金属中如何清除深度缓冲区或模板缓冲区?

来自分类Dev

getchar()和scanf中的输入缓冲区

来自分类Dev

在C中的fgets()之后清除输入缓冲区

来自分类Dev

在OpenGL中清除双精度缓冲区

来自分类Dev

清除Java中的数据报缓冲区

来自分类Dev

在C#中清除鼠标缓冲区

来自分类Dev

如何从bash清除konsole中的回滚缓冲区?

来自分类Dev

读取c中的输入后如何清除缓冲区?

来自分类Dev

如何强制MPlayer在帧缓冲区中留下碎片?

来自分类Dev

如何清除ReplaySubject上的缓冲区?

来自分类Dev

清除cout缓冲区(C ++)

来自分类Dev

何时清除顶点缓冲区对象

来自分类Dev

清除MIDI输出缓冲区

来自分类Dev

Python:清除标准输入缓冲区

来自分类Dev

何时清除顶点缓冲区对象

来自分类Dev

如何清除Neovim缓冲区

来自分类Dev

Tmux,禁用缓冲区清除功能

来自分类Dev

强制缓冲区溢出以了解

来自分类Dev

scanf_s从缓冲区中删除I char

来自分类Dev

当stdin非交互时如何清除python中的stdin缓冲区

来自分类Dev

如何重新映射清除缓冲区以删除Iterm2中的所有行?

来自分类Dev

有哪些方法可以将stdout捕获到读取时自动清除的缓冲区中?

来自分类Dev

如何以编程方式清除Windows中的缓冲区和缓存