问题标签 [getchar]
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 - 在 C 中使用 EOF 和 getchar() 进行字符计数
我是 C 的新手,想弄清楚 EOF 和 getChar() 是如何工作的。
当我键入一些随机字符时,程序什么也不做,我认为它永远不会退出那个 while 循环。这是为什么?我在 Windows 7 上使用 CodeBlocks。
c - 取消 getchar()
我有一个进行大量处理的小程序。您可以通过按回车键来打印进度。
我实现这一点的方法是在主线程中完成处理,同时我有一个 pthread 在 getchar() 上不断循环以等待输入键。
问题是当我完成处理时。发生这种情况时,主线程完成,但仍等待按 enter,因为 getchar() 被阻塞。
如何“取消”getchar()?
c - 在 Ubuntu 中无法使用 getchar 打印字符数
我是 C 和 Ubuntu 的新手。我编写了一个非常简单的程序来计算使用while
和的字符数getchar()
。该程序是:
我保存它并使用gcc c1.c -o c1
. 没有报告错误。我使用./c1
. 我将输入输入为daniweb,然后按 Enter,但显示计数。什么地方出了错?是无限循环吗?如何getchar()
确定EOF
何时从键盘输入?
c - 将文本中的空格限制为一个 - c
我正在阅读 K&R,问题是:编写一个程序以将其输入复制到其输出,将一个或多个空格的每个字符串替换为一个空格。在我的脑海中,我想我知道我需要做什么,设置一个布尔值来知道我何时在空间中。我已经尝试过了,但没有成功。我找到了这段代码并且它有效,我正在努力弄清楚是什么阻止了空间被写入。我想我可能有它,但我需要澄清。
我创建了一个文本文件来处理,文本内容如下:
在 'this' 上的 's' 之后,状态变为 1,因为我们在一个空间中。该空间被写入并读取下一个空间。所以现在我们输入:
但是 inspace 不是 0,而是 1。那么会发生什么?代码是否跳过返回 0;,不写任何东西,只是继续 while 循环?返回0;在循环之外,但这是我可以看到没有返回值的唯一方法。
c++ - debian linux c++ 如何制作按键刹车无限循环
当我按下键盘上的“q”键时,我想要一个无限循环中断。我没有意识到的问题:标准 getchar 等待用户输入并按下回车键,从而停止执行循环。
我解决了“输入”问题,但循环仍然停止并等待输入。
这是我的代码:
newline - 将返回/输入捕获为按键以退出程序
该程序读入一个文件,然后要求用户输入要显示的行数。显示行数后,将再次提示用户打印更多行或按回车键退出。
我很难通过捕获换行符和/或回车来退出。如果按下返回按钮,我的程序不会退出,但如果我输入 ascii 值(10 是换行的十进制),我的程序不会退出
我希望程序在按下 enter 时退出。
c - 空字符之前的这些附加字符是什么?
我正在关注 Kernighan 和 Ritchie 的 C 书,但在处理字符串时遇到了一些困难。
在下面的代码中,似乎我的字符串虽然是从用户输入的,但在 null ( ) 字符getchar()
之前包含额外的,我想说的是垃圾字符。\0
这是代码:
这是一个一个显示字符数组的每个元素的输出。这意味着以下内容:
Array_element: (ascii_number) = ascii_character
你看到元素 12 和 13 了吗?(元素 14 可能是空字符\0
)。威士忌酒。探戈。狐步舞。
这是真正的关键,如果我将字符数组定义为只有100 个元素,而不是 200 个,那么输出是合理的。例如,如果我简单地替换
char s[200]
和
char s[100]
那么输出如下:
(我仍然不确定换行符在哪里。那不是 ascii 字符#10吗?)
再次,威士忌探戈狐步舞。
这里发生了什么?
更新
因此,根据下面的答案,当我将字符数组的大小设置为 100 或 200 个元素时,输出的差异似乎真的是巧合——我只是在未初始化的内存中处理垃圾/噪声。
\0
正如答案敏锐地表明的那样,我需要明确地终止我的数组。
c - C 编程 - K&R 示例 1.5.2 - 修改后的程序未按预期运行
我的问题只是“为什么我在第 10 行和第 11 行的代码不能正常运行?” 我的代码的预期目的是完全按照原始 K&R 代码的意图执行,但不计算 nc 任何时候 (getchar() == '\n') 请您赐教?
稍作修改的 K&R 代码:
我使用 64 位 Windows 7、CodeBlocks10.05、GNU GCC 编译器。
我目前的进展和理解:
在示例运行中,我输入单词two
并按 Enter,这等于 4 个输入,然后按 ctrl+Z 输入一个^Z
或 EOF 字符。然后程序打印1
. 我期待它打印3
。我想唯一合乎逻辑的解释是它的行为与我的意图完全相反(它只计算换行符?)。事实证明,如果我输入单词two
并按回车键,让我们说 4 次,它会打印4
. 它似乎在计算nc
输入的每个换行符,但是如果我单独按 Enter(在这种情况下为 4 次)然后按 EOF,它总是会打印0
. 经过进一步的实验,在某些人看来,看不见的 4 可能是这个程序的一个神奇数字。如果我启动它并准确地按回车键(一个可被 4 整除的数字)然后 EOF 它会打印0
. 但是,如果我按其他次数输入,EOF 什么都不做,我必须输入^Z
两行,一个接一个,才能正确结束 while 循环,然后打印1
。这让我大吃一惊!
c - 按 home 或 end 时从 getchar 获取大写 O
我在我的 C 代码中使用它:
这是家庭作业的一部分,但这个特定的部分是我正在做的超出作业要求的事情。
我们正在实现一个 shell,我们已经得到了一堆代码来开始。该代码不使用 ncurses(如果可以的话,我会使用它)并且更改它需要重写大量提供的代码。
当我按我的HOMEorEND键时,我得到一个大写 O(在 Open 中是一个 o),然后是HOMEandEND键。我是getchar()
用来获取角色的。
似乎只有这两个键可以做到这一点,但我不确定。stdout
如果提供的系统函数调用是唯一不同的东西(我们也设置为非阻塞,但这不重要),我不是 100% 。
我真的很困惑,我想实现 END 和 HOME 键,因为我经常使用它们。
如果这不是很多信息,我很抱歉。我不太了解,system
无法真正理解 -echo 和 -icanon 对 stty 的影响。我已经查看了手册页,但我仍然无法弄清楚。
编辑
从亚历克斯布朗的回答中,我确认我得到了转义字符。我有类似以下的内容(在错误的伪代码中):
所以它从转义序列中打印出 O ,而不是 [ (我有0x48
forHOME和0x46
for END)。仍然为如何获得真正的密钥代码感到困惑......