问题标签 [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.
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
.
c - 如何在按键后立即读取终端的输入缓冲区
我想在我的 c 程序中读取箭头按键并用其他字符串替换它们(立即在终端本身中)。我正在尝试像在 unix 终端中一样实现 bash 历史记录功能。我写了这段代码。
但是,这不起作用,因为终端等待换行符或 EOF 将输入缓冲区发送到标准输入。所以,我必须按回车键来分析用户输入。
在此答案中,用户提到要使用system ("/bin/stty raw");
,但这会替换所有默认终端行为(例如退格、删除等)。
那么,如果检测到箭头按键,有什么方法可以直接读取/操作终端输入缓冲区并调整缓冲区本身?
环境 - Ubuntu (Linux)
更新1:有没有办法改变信号/中断(默认是按回车键),使终端将存储的输入发送到缓冲区?这也可以帮助我实现相同的行为。
最终代码:
我通过检查输出找到了特定按键的 ASCII 字符strace bash
c++ - C++,cin 如何从输入缓冲区中读取数据?
CS 学生刚开始使用 C++,我很难理解 cin 和 getline() 如何读取数据。
我的理解是 cin >> 将在输入缓冲区中查找数据,如果没有找到它会提示用户。然后它将读入“John”,在缓冲区中留下一行 return \n。
如果之后调用 getline() ,它将看到 \n 并且什么都不返回,对吗?
如果接下来调用 cin 它将按预期工作,为什么 cin 看不到缓冲区中的行返回并终止?
c++ - 如果太多字符“越界”输入到数组中,则显示消息并提示重新输入到数组中
我就是想不通。首先,我不允许使用字符串库。但是,我希望用户将他们的专业输入到一个 char 数组中,但是如果他们输入太多(进入输入缓冲区),那么会显示一条消息并提示将他们的专业重新输入到同一个数组中。我是否需要以某种方式擦除阵列然后让它们重新输入?或者,我是否使用 cin.peek() != '\n' 检查输入缓冲区?我只是不知道该怎么办...
我一直在尝试很多不同的事情,但我只是回到下面的代码寻找新的解决方案。
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) )。
程序:
输入文件:
执行命令:
输出(请注意缺少几行中的第一个字符):
c - C编程,谁能解释一下?
在这种情况下,输入
hi how are you\doing
我得到一个输出
hi\thow\tare\tyou\\doing
当我使用输入运行此程序时
(大空间是制表符)
我得到这个输出
代码:
运行这个,我什么也得不到。没有输出。返回到 shell 提示符。
更准确地说,在第一个程序中,我得到了我想要的输出,但是在第二个程序中,我得到了反斜杠,\t
但不是在\
我期望\\\
的输出之后,看看 how \t
become \t\
,是 '\b' 导致它? 如果是,它是如何工作的?但如果是这样,为什么在第三个程序中不会发生同样的情况?
在 rasbian 默认 gcc 编译器和 windows 的 mingw msys-gcc 包上运行这个。
android - AudioTrack 不工作,没有声音
你能检查一下为什么我的音轨不工作,我确实有一个缓冲区进出音轨,它应该可以工作。
c - 为什么在循环中,带有 %d 的 scanf() 不会等待用户输入,以防它之前收到无效输入?
我正在使用什么scanf() returns when it gets what is expects or when it doesn't. What happens is it gets stuck in the
while()` 循环。
据我所知test = scanf("%d", &testNum);
,如果收到数字则返回 1,否则返回 0。
我的代码:
c - 像空格这样的修饰符在scanf中做了什么?
1.两个格式说明符之间的空格告诉计算机做什么?2.在从那里读取之前,是否像 %d 之类的格式说明符而不是 %c 清理输入缓冲区?
c# - 在C#中如何知道串口的输入缓冲区有信息?
我正在用 C# 构建一个程序,用于我在一所大学的一门课程中,以演示异步连接如何使用 RS-232 和两台连接在一起的计算机工作。我的课程不是关于编程,而是关于数据网络,所以我正在寻找连接性。
图 1 - 使用 Visual Studio 2015 的 GUI 示例布局
我想在我的程序中实现的功能之一是显示主从单工连接的工作原理(即程序可以选择作为主机从键盘发送输入;或从机只接收信息并在其上打印一个文本框)。
我已经拥有的是使用特定特性(波特率、数据位、停止位等)初始化串行端口的能力。此功能使用 GUI 中的组合框选择,并在用户单击按钮“打开端口”时分配给端口。
我不知道如何创建程序的“从属”部分。我的想法是,在您选择程序作为“从属”程序后,您打开端口等待某种标志或事件在输入缓冲区存储数据时触发。
我一直在阅读几个论坛,但找不到与我需要的类似的东西。然而,我已经测试了多种替代方案,我相信这些替代方案会让我更接近我所需要的,但几乎没有结果。我来询问我可能做错了什么,或者关于如何解决这个问题的建议。有问题的行以粗体显示(或 2 星 ( * ) ):
我不是一个经验丰富的程序员,我只是想为我的学生创造一些有用的东西。任何建设性的批评都将受到高度赞赏。