问题标签 [fflush]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1036 浏览

c - C: Stdin - 删除多余的数据

0 投票
2 回答
959 浏览

c++ - 程序跳过 if 语句

我编写了一个包含很多if部分的程序。它是用 Visual Studio 2013(scanf_s) 编写的。尽管满足了这些部分,但它会跳过一些if部分。你能告诉我为什么吗?我的怀疑:第一个scanf命令被干净地执行了。其他scanf命令不起作用。我不能输入任何东西。该计划严格执行。当我在命令fflush(stdin)之间插入时scanf,它可以工作。因为这个我听到了不好的事情fflsuh我想问:我怎样才能用另一种方式解决它?

这是我的代码:

PS:这里的程序输出截图:http: //i.gyazo.com/01471ce3d563837f526fbcab8363e1f2.png

0 投票
2 回答
872 浏览

c# - Is there something similar in C# to fflush() from C?

My problem is:

The user can search an address. If there was nothing found, the user sees an messagebox. He can close it by pressing ENTER. So far, so good. Calling SearchAddresses() can also be started by hitting ENTER. And now the user is in an endless loop because every ENTER (to let the messagebox disappear) starts an new search.

Here the codebehind:

And here the xaml code:

How can I handle this endless loop in C#?

0 投票
3 回答
261 浏览

c - 如何清除已停止进程的scanf内容?

我正在使用 fork,子进程使用 for 循环内的 scanf 从用户读取数据十次。然而,父进程在睡眠 4 秒后向子进程发送 SIGSTOP 信号,并从用户那里读取一个值并打印它。但是,如果用户在子进程中输入了数据但没有为 scanf 按下回车键,则父进程读取但打印写入子进程中的数据。我该如何阻止这种情况发生。

因此,例如输出如下所示:

一个

0:一个

b

1:乙

ac(我在这里没有按 Enter 并等待 SIGSTOP)

孩子停止

tr(为父项输入数据并按下回车键)

ac2:tr

C

3:c ...等等

那么输入tr后为什么我的父母显示ac?

0 投票
1 回答
77 浏览

c - 执行程序时出错

我在代码块中执行此代码时遇到了一些麻烦。当我运行代码时,它一直运行良好,直到 scanf 行,之后发生错误并停止代码运行。

0 投票
3 回答
8479 浏览

c - C:清除标准输入

基本上在每个 printf 之前的 windows 代码块中我都有“fflush(stdin);” 哪个有效。当我将代码复制到 Linux 时,它不起作用,“fflush(stdin);”的任何替代方案也不起作用 我发现。无论我似乎采用哪种方式,输入似乎都没有在缓冲区中清除,或者我的代码中的某些内容不正确。

0 投票
1 回答
355 浏览

c - fflush() 函数不适用于标准输入

我很抱歉这个愚蠢的问题。我有 C 程序提示用户输入年龄和姓名,然后将年龄和姓名打印到屏幕上。这是我从书中读到的练习。

这个程序:

当我在第一个输入额外字符时,scanf()程序终止并将额外字符分配给下一个scanf()

然后我更改了代码,并添加了名为的函数,并在其中clear_buff()使用该fgets函数clear_buff()来读取流中的剩余字符。代码按预期工作。

我的问题是为什么fflush(stdin)不在这个程序中工作?

书中说该fflush函数清除流上的任何缓冲数据。而且我知道 fflush()如果使用 I/O 流,该函数是 C 标准函数。

0 投票
1 回答
215 浏览

input - 如何清除在c中接收到多个输入的输入流?

我正在使用 TCP 协议编写一个客户端-服务器项目,因此在我的客户端代码中,我有一个带有 read() 的 while 循环,它等待来自服务器的 write()。

我认为这与我实际要问的问题无关,但是,这就是导致我的问题的原因,即当客户端等待来自服务器的 write() 时,用户可以在终端上键入得到的句子堆积在输入缓冲区上,所以当我的客户端最终收到一个 write() 并从他的 read() 移动时,我无法使用通常的清除每个字符的方式清除输入缓冲区,直到找到换行符:

因为用户在等待时输入了很多句子并多次按下回车键。

有什么方法可以完全清除输入流,无论其中有什么?

到目前为止,我发现我可以使用fflush(stdin)它,虽然非常规,但它对我有用,但有时它不起作用,所以我不能使用它。

我还尝试检查输入流的结尾:

但它陷入了无限循环。我还尝试使用在 read() 之后忽略新行的 scanf():

这样所有东西都会被移到这个缓冲区,这也不起作用,只有最后一个输入的句子中的第一个单词被存储在那里。

最后,我尝试弄乱 fgets() 但也没有运气。

PS 有什么方法可以在 read() 调用之前完全禁用标准输入流并在之后再次启用它?

编辑:出于存档目的,我实际上分叉了我的程序,以便继续扫描输入并立即使用我提到的标准第一种方式清除它们。不过,我想知道是否有办法完全清除输入缓冲区,无论里面有什么。

0 投票
2 回答
391 浏览

c - 继续在 c 中的 while 循环中输入输入。我试过 fflush

我正在学习 C 中的数据结构,我需要从用户那里获取输入。我从搜索其他 stackoverflow 问题中了解到,在打印某些内容后需要使用 fflush。

我遇到的问题是,当我输入 add 时,它不会打印任何内容,直到我通过输入 quit 两次来中断 while 循环。有人可以解释如何解决这个问题以及为什么会发生吗?

这是代码:

我输入 print 后得到的输出,然后添加是:

光标在添加下闪烁。如果我输入退出,我会得到:

所以程序还没有结束,我想知道为什么。有人可以解释一下吗?要结束程序,我必须再次输入退出:

0 投票
1 回答
1711 浏览

c - fflush 在 fork 操作之前做了什么?

printf如果给出以下代码段,我想知道打印“PROCESS”多少次:

请解释有无的逻辑fflush();