问题标签 [input-buffer]

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 回答
368 浏览

perl - Perl IPC::Run3:如何模拟一个 pty 的 stdin 到子进程?

这是 IPC::Open3 的后续问题,并确定孩子是否正在等待输入,尽管他们承认它们不相关。

采取以下示例代码:

上面的代码command是另一个 perl 脚本。子脚本调用who -m以从终端查找谁拥有标准输入,这是为了在使用 root 或其他通用系统用户调用子脚本或父脚本的情况下使用。

当父母调用时,我从孩子那里得到的错误如下。

子代码如下。

第 354 行代码:

当我从命令行调用子脚本时,上面的代码工作得很好,但是由于who -m试图查看谁拥有终端的标准输入并且终端已被父脚本替换,我相信我需要找到一种方法来调用从父级运行时使用模拟 pty 的 who -m。无论是通过修改孩子还是父母或两者都无关紧要,因为我可以同时修改两者。

所以我的问题是:我怎样才能在父母内部运行孩子并且仍然依赖who -m被喂给孩子的输出?

编辑:ikegami 在他的回答评论中提供了最好的解决方案。它没有回答问题,但确实解决了我的问题。

我的 ssh 守护进程设置了 env var SSH_TTY,所以你可以使用perl -MFile::stat -E'say scalar(getpwuid(stat($ENV{SSH_TTY})->uid))'. scalar(getpwuid($>))如果未设置,则默认为。

0 投票
0 回答
178 浏览

matlab - 在 Matlab 中读取 UART 传输输入缓冲区

我正在尝试在两个 ESP8266 Wifi 芯片之间进行串行通信。首先,我尝试在 for 循环中发送样本数据 10 次。这是代码:

发射器:

接收者:

它运作良好。问题是当我想发送一些延迟的数据时,发送器应该再次连接到接收器,并且服务器(接收器)接收到一些数据,表明再次建立连接。接收到的 Buffer 应该是:

但重新连接后接收到的 Buffer 是:

数据的剩余部分将在下一个数据包中读取,下一个数据包相同。

我应该怎么做才能只接收数据?

发送和接收函数:

0 投票
3 回答
212 浏览

c - 从C中的文本文件中扫描值时如何清除输入缓冲区?

文本文件中的内容是:

输出:

当我输出程序时,我可以获得所有值,但由于某种原因,当我打印这些值时,整个字符串减半并向下移动一行。

如果您想看一下,repl.it 就在这里:

https://repl.it/JbRy/69

如何让输出单行打印出来;如果是这样的话,而不是阅读 \n “换行符”?

0 投票
3 回答
140 浏览

c - 是通过将 char * 缓冲区分配给 '\n' 来清除缓冲区,同时在 c 中的循环内获取用户输入错误?

我试图解决当我想在循环中获取用户输入时遇到的问题*。编辑 *:问题是这个 -> 清除缓冲区以读取下一个输入。

这容易出错吗?

编辑:这是我遇到错误的代码。没有分配给 '\n' 我得到了错误的循环计数和输入。删除那些行没有错:/

edit2:错误基于内存溢出以及 fgets 如何处理输入。

如果我输入超过 9 个数字作为输入(我不小心输入了),则跳转到下一个循环。如果我使用 while 循环清除缓冲区,则不会发生任何错误。*buffer = '\n' 没用,没意义...

0 投票
0 回答
78 浏览

c - 关于在c中清除输入缓冲区

我有这个代码,一个从用户那里获取一个负整数的程序,如果不将它们困在一个循环中,直到他们输入一个负整数。我有这部分,但是,我怎么能清除输入缓冲区?

我尝试使用 while ((getchar()) != '\n'); 在第一次 scanf_s 之后,但它失败了。

这是代码

0 投票
0 回答
90 浏览

c++ - 无法清除cin。卡在输入

cin失败时,它永远失败。即,我以后什么都看不到,而且cin.fail()总是返回真,无论我如何尝试清除它。

重新创建的最少代码:

用最少的输入:

我在这个问题下尝试了所有 C++ 答案,但没有一个有效。奇怪的是,fflush(stdin)做得很好。

我使用 Dev-C++ 作为我的 IDE,并将其打包的 GCC 替换为 SourceForge 的 MinGW GCC 6.3.0。g++.exe编译时提供以下参数

-static在没有最后两个参数的情况下,我的 Ubuntu 上的 GCC 7.2.0 也出现了同样的问题。


正如评论中所建议的,交换cin.clear()cin.ignore()工作的顺序。这是什么原因?

0 投票
0 回答
342 浏览

asynchronous - MASM 汇编语言中的异步输入

我有一个使用 masm 用汇编语言制作秒表的项目。秒表在程序启动时开始并继续。我想实现停止、暂停和播放等功能。当秒表运行时,我不能要求用户输入任何值,因为它是一个循环,并且在每次迭代中,控制台上的文本每隔一毫秒就会更新一次。我在想,在循环的每次迭代之前,我可以检查键盘缓冲区或类似的东西,这表明某个键被按下并使用该值来检测和停止、暂停或播放秒表,这会很好。我知道它不是真正的异步解决方案,但我在 Internet 上找不到任何关于我的问题的描述性内容。

我的秒表代码:我想做我在做之前问过的事情call clrscr

0 投票
1 回答
1394 浏览

c - While 循环在第二次迭代中跳过第一个`fgets()`

我知道这样的问题一直被问到,而且我已经阅读了几个,但是,我从来没有scanf()像其他所有代码一样在我的代码中使用过,所以我找不到类似的问题。我不知道为什么在第二次、第三次、第四次等迭代中,while 循环跳过了我的第一个fgets().

代码:

输出:

...ETC。

我认为这与清除输入缓冲区有关,我尝试了几件事,但没有任何效果。第二天乱搞C,所以我不太了解。(Python 更简单,哈哈)

0 投票
0 回答
238 浏览

c++ - 带有菜单系统的 C++:按箭头键时如何消除输入缓冲区

我能够制作一个有菜单的程序。起初,程序运行顺利。当用户在程序中的某个点开始输入内容然后再次导航菜单时,问题开始出现。

有时它会打印出用户ENTER在菜单中按下键时先前输入的整数/字符。

我设法用cin.ignore(). LEFT但是,当用户按下和RIGHT箭头键时,如何消除输入缓冲区内的显示(我不知道是多余的还是垃圾) ?或者我认为甚至还有一个 forUPDOWN箭头键?

我在程序中使用的一些函数的代码片段。功能 menu_std():

函数menu_yn():

函数验证()

问题截图:

问题截图

每当我在菜单上按 Enter 键时都会出现数字。我怀疑每当用户在输入之前按下箭头键时它就会出现。

0 投票
0 回答
116 浏览

swift - 线程 6:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

我正在从数据中读取字节。但是在第一次迭代while循环后崩溃了。

注意:这不是索引越界问题。