问题标签 [putchar]
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 - 为什么 putchar、toupper、tolow 等采用 int 而不是 char?
在 C 中,字符串是 char( char *
) 的数组,字符通常存储在char
. 我注意到来自 libC 的一些函数将作为参数整数而不是字符。
例如,让我们来看看toupper()
两者tolower()
都使用的函数int
。手册页说:
如果 c 不是 unsigned char 值或 EOF,则这些函数的行为是未定义的。
我的猜测是,与 a int
,toupper
并且tolower
能够处理unsigned char
and EOF
。但实际上EOF
是在实践中(关于它的值有什么规则吗?)一个可以与 a 一起存储的值char
,并且由于这些函数不会转换EOF
为其他东西,我想知道为什么toupper
不简单地将 char 作为参数.
无论如何,为什么我们需要接受不是字符的东西(例如 EOF)?有人可以给我一个相关的用例吗?
这与fputc
or类似putchar
,也将 aint
转换为unsigned char
无论如何。
我正在寻找那个选择的确切动机。我想被说服,我不想回答我不知道有一天是否有人问我。
c - getchar() 和 putchar() 函数背后的理论
我正在研究 K&R 的“The C Programming Language”,示例 1.5 难倒了我:
我知道“getchar()”需要一个字符来显示“putchar()”。但是,当我在终端中运行程序时,为什么我可以传递一整行字符让 'putchar()' 显示?
c - 通过 getchar 和 putchar 打印多行
我是学习 C 编程语言并使用 Microsoft Visual C++ 编写和测试代码的初学者。
下面的 C 语言程序来自 text(第 1.5.1 节)通过 putchar() 和 getchar() 将其输入复制到其输出:
程序每次按ENTER键都会打印键盘输入的字符。结果,我只能在打印前输入一行。我找不到在打印前通过键盘输入多行文本的方法。
有什么办法以及如何让这个程序从键盘输入和输出多行文本?
对不起,如果这是一个基本而无知的问题。
提前感谢您的关注和感谢。
c - C中的3位生成器
我正在尝试生成所有可能的 3 位数组合,例如:012, 013 ,014...
但是:我想忽略重复的字符(如 999 或 022),我也不想重复使用数字(如果 123 已经存在,则不要显示 321)所以,最后一个值应该是789。
这里我的代码:
我希望我的结果按如下顺序排列:
另外,除了 printf / putchar 之外,我不应该使用任何功能。
c - putchar(c) 在这里 '_' 的值是多少?
putchar(c) 外循环的值是多少?
当我运行程序时,说“th”(wtq)并在cmd(Windows)中按回车:
注意前面的空格printf c_outloop 0
。是putchar(c)
空间的价值吗?
c - Windows控制台中奇怪的显示EOF字符
最近遇到了一个有趣的 EOF 字符控制台窗口解释。在某些运行 Windows 7 代码的机器上,putchar (255)
&&putchar (-1)
显示为空格字符,有些则显示为'a'
字符。第二个让我困惑。请告诉我,为什么会这样?
c - C语言中的Putchar和Getchar
我正在阅读 K&R 的 The C Programming Language 并且对 putchar 和 getchar 感到困惑。我制作了一个程序,您可以在其中输入 10 个字符,然后程序将它们打印回屏幕。
我希望得到这样的输出:
...等等 10 次,但这是我得到的输出:(我在输入 2 个字符后停止)
不知道为什么我的输入字符与固定字符串组合并输出。
另外,我不太清楚为什么使用整数来存储字符。
c - 我有两个与 getchar() 和 putchar() 相关的问题
我的第一个问题是,每当我们使用getchar()时,它都会在内存中的某处创建一个缓冲区,当我们按下 enter 时,getchar()开始从缓冲区读取内容,而getchar()一次只读取一个字符。因此,在上面的程序中,当第一个getchar()执行时,它会在内存中创建一个缓冲区,并且整行内容将存储在缓冲区中,假设我在输入“vik”时写了“vik”,getchar()开始从缓冲区读取内容,然后是“v”将分配给变量 c,然后只有 'v' 将从缓冲区中刷新,因为getchar()一次只读取单个字符。然后在下一条语句中putchar(c)在屏幕上打印 'v'。所以现在“ik”getchar()语句执行它不会再次要求用户写入内容,因为除非缓冲区不会完全刷新,否则它不会再次要求用户写入内容,而是从缓冲区读取内容。所以这里“ik”保留在黄油中,所以在第二个getchar()语句中从缓冲区中读取“i”,然后再次“i”将从缓冲区中刷新,putchar(c)打印“i”。现在当第三个getchar()执行时,“k”留在缓冲区中,从缓冲区中读取“k”并分配给 c,然后“k”也从缓冲区中刷新。此时缓冲区已完全刷新,缓冲区中没有内容当第四个getchar()将执行它对用户写东西的要求,因为缓冲区中没有内容,所以假设我写“as”并按回车键。 现在我的主要问题是,当我给出两个内容“as”时,还有两个 getchar() 和 putchar(c) 需要执行,那么为什么只有 'a' 会在屏幕上打印,为什么不是 's' 呢?
而且,我的第二个问题是,如果我们说当我们使用getchar()时它会在内存中创建一个缓冲区,所以如果我们使用fflush(stdin)它必须刷新缓冲区。因此,根据上述程序中的这一点,当我在第一个putchar(c)之后写入fflush(stdin)而不是刷新缓冲区时,它执行并打印与上述程序相同的输出,为什么?
c - 字符类型变量如何在这个程序中保存一个以上的字节?
我正在使用带有gcc的 Ubuntu 12.04 LTS 。谁能告诉我,这个字符类型变量怎么能容纳超过一个字节?注意:此程序将回显您键入的所有字符(多个字符)。例如,如果您键入“thilip”,那么它将回显为“thilip”。每个字符包含 8 位(一个字节),所以我输入了 6 个字符(6 个字节)。那么,getchar 函数如何将此值分配给只能保存一个字节的字符类型变量?
c - C程序中的奇怪输出
所以我刚刚开始学习 C,如果这有什么不同,我正在使用 gcc,并且由于某种原因,这个简单的程序给了我奇怪的输出:
我保存它并在 vim 中使用 :!gcc % 然后 :!./a.out ,当我输入任何字母然后 Enter 时,它只会给我“^^”作为输出。我四处搜索,找不到其他人有这个问题,它是直接从 K&R 复制的,所以我不知道是什么导致了这个错误,有人知道发生了什么吗?