问题标签 [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 投票
3 回答
5763 浏览

c - Read two characters consecutively using scanf() in C

I am trying to input two characters from the user t number of times. Here is my code :

Strangely the output the very first time is:

That is, the code doesn't wait for the value of a.

0 投票
2 回答
3541 浏览

c - 如何在按键后立即读取终端的输入缓冲区

我想在我的 c 程序中读取箭头按键并用其他字符串替换它们(立即在终端本身中)。我正在尝试像在 unix 终端中一样实现 bash 历史记录功能。我写了这段代码。

但是,这不起作用,因为终端等待换行符或 EOF 将输入缓冲区发送到标准输入。所以,我必须按回车键来分析用户输入。

在此答案中,用户提到要使用system ("/bin/stty raw");,但这会替换所有默认终端行为(例如退格、删除等)。

那么,如果检测到箭头按键,有什么方法可以直接读取/操作终端输入缓冲区并调整缓冲区本身?

环境 - Ubuntu (Linux)

更新1:有没有办法改变信号/中断(默认是按回车键),使终端将存储的输入发送到缓冲区?这也可以帮助我实现相同的行为。

最终代码:

我通过检查输出找到了特定按键的 ASCII 字符strace bash

0 投票
1 回答
266 浏览

c++ - C++,cin 如何从输入缓冲区中读取数据?

CS 学生刚开始使用 C++,我很难理解 cin 和 getline() 如何读取数据。

我的理解是 cin >> 将在输入缓冲区中查找数据,如果没有找到它会提示用户。然后它将读入“John”,在缓冲区中留下一行 return \n。

如果之后调用 getline() ,它将看到 \n 并且什么都不返回,对吗?

如果接下来调用 cin 它将按预期工作,为什么 cin 看不到缓冲区中的行返回并终止?

0 投票
0 回答
68 浏览

c++ - 如果太多字符“越界”输入到数组中,则显示消息并提示重新输入到数组中

我就是想不通。首先,我不允许使用字符串库。但是,我希望用户将他们的专业输入到一个 char 数组中,但是如果他们输入太多(进入输入缓冲区),那么会显示一条消息并提示将他们的专业重新输入到同一个数组中。我是否需要以某种方式擦除阵列然后让它们重新输入?或者,我是否使用 cin.peek() != '\n' 检查输入缓冲区?我只是不知道该怎么办...

我一直在尝试很多不同的事情,但我只是回到下面的代码寻找新的解决方案。

0 投票
0 回答
362 浏览

c++ - 没有输入缓冲和刷新标准输入有时会清除一个输入字符(c++,windows)

问题仅与 Windows 有关。我正在使用 Visual Studio 2012 编译器 (vc11)。

我想从输入文件(重定向为标准输入)中读取几行(逐个字符)。但是在阅读每一行之后,我想fflush stdin。

让我详细解释一下:我通过 setvbuf 函数关闭了标准输入缓冲(没有这个标准输入将被缓冲并且首先刷新清除整个输入)。然后程序从输入文件中读取几行。字符被一一读取(fgetc 函数)。在每一行之后,我用 fflush 清除标准输入。在 Windows 上定义了输入流上的 fflush。根据 MSDN:“如果流打开输入,fflush 清除缓冲区的内容。” https://msdn.microsoft.com/en-us/library/aa272686(v=vs.60).aspx

但我不明白它是如何工作的。您可以看到有时第一个字符(行)不是从输入中读取的。可能是由于 fflush (也许 fflush 从标准输入缓冲区中清除了第一个字符?)。但它只发生在几行(有些行是用第一个字符读取的)。

为什么这个第一个字符会消失(有时)?

我该如何纠正?(假设我想在阅读每一行后调用 fflush(stdin) )。

程序:

输入文件:

执行命令:

输出(请注意缺少几行中的第一个字符):

0 投票
1 回答
99 浏览

c - C编程,谁能解释一下?

在这种情况下,输入

hi how are you\doing

我得到一个输出

hi\thow\tare\tyou\\doing

当我使用输入运行此程序时

(大空间是制表符)

我得到这个输出

代码:

运行这个,我什么也得不到。没有输出。返回到 shell 提示符。

更准确地说,在第一个程序中,我得到了我想要的输出,但是在第二个程序中,我得到了反斜杠,\t但不是在\我期望\\\的输出之后,看看 how \tbecome \t\,是 '\b' 导致它? 如果是,它是如何工作的?但如果是这样,为什么在第三个程序中不会发生同样的情况?

在 rasbian 默认 gcc 编译器和 windows 的 mingw msys-gcc 包上运行这个。

0 投票
2 回答
759 浏览

android - AudioTrack 不工作,没有声音

你能检查一下为什么我的音轨不工作,我确实有一个缓冲区进出音轨,它应该可以工作。

0 投票
1 回答
325 浏览

c - 为什么在循环中,带有 %d 的 scanf() 不会等待用户输入,以防它之前收到无效输入?

我正在使用什么scanf() returns when it gets what is expects or when it doesn't. What happens is it gets stuck in thewhile()` 循环。

据我所知test = scanf("%d", &testNum);,如果收到数字则返回 1,否则返回 0。

我的代码:

0 投票
2 回答
235 浏览

c - 像空格这样的修饰符在scanf中做了什么?

1.两个格式说明符之间的空格告诉计算机做什么?2.在从那里读取之前,是否像 %d 之类的格式说明符而不是 %c 清理输入缓冲区?

0 投票
2 回答
1200 浏览

c# - 在C#中如何知道串口的输入缓冲区有信息?

我正在用 C# 构建一个程序,用于我在一所大学的一门课程中,以演示异步连接如何使用 RS-232 和两台连接在一起的计算机工作。我的课程不是关于编程,而是关于数据网络,所以我正在寻找连接性。

图 1 - 使用 Visual Studio 2015 的 GUI 示例布局

我想在我的程序中实现的功能之一是显示主从单工连接的工作原理(即程序可以选择作为主机从键盘发送输入;或从机只接收信息并在其上打印一个文本框)。

我已经拥有的是使用特定特性(波特率、数据位、停止位等)初始化串行端口的能力。此功能使用 GUI 中的组合框选择,并在用户单击按钮“打开端口”时分配给端口。

我不知道如何创建程序的“从属”部分。我的想法是,在您选择程序作为“从属”程序后,您打开端口等待某种标志或事件在输入缓冲区存储数据时触发。

我一直在阅读几个论坛,但找不到与我需要的类似的东西。然而,我已经测试了多种替代方案,我相信这些替代方案会让我更接近我所需要的,但几乎没有结果。我来询问我可能做错了什么,或者关于如何解决这个问题的建议。有问题的行以粗体显示(或 2 星 ( * ) ):

我不是一个经验丰富的程序员,我只是想为我的学生创造一些有用的东西。任何建设性的批评都将受到高度赞赏。