问题标签 [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.

0 投票
1 回答
178 浏览

c - `putchar`的以下两种用法有什么区别?

我正在编写一些代码,但我在程序的某个部分得到了意外的输出,这反过来又破坏了整个系统。

代码可以简化并缩短为:

根据上面的代码,我正在尝试打印用户选择的字符/整数序列。数字应该保持不变,而如果用户输入字母A,则应该打印2

预期产出

实际输出

一旦遇到这个问题,我决定调整一些东西并提出以下完美运行的代码。它使用相同的方法,但产生不同的输出:

预期产出

实际输出

我无法理解为什么我无法将第一个代码中输入的字符的 ASCII 值转换为单个整数。造成这种输出差异的原因是什么?我只是将控制表达式的类型从if-statement更改为 a switch-statement(或者我认为是这样)。如何更改第一个代码以提供与第二个代码相同的输出?

0 投票
0 回答
41 浏览

c - getchar() 是否从输入中获取字符?

代码:

当我输入abc

我猜输出是 aabbcc ,但输出是

为什么 ?

0 投票
0 回答
95 浏览

c - 由于参数差异,定义宏以更改打印函数错误

我正在尝试将统一测试框架与 NRF51822 板一起使用,但为了查看统一的输出,我需要重新路由它/管道,以便它在我的计算机上可见。我正在使用 SEGGER RTT 在我的项目中打印,理想情况下 id 将其用于 unity.c 输出。

根据统一

默认情况下,Unitystdout在运行时打印其结果。这在您使用本机编译器进行测试的大多数情况下都可以正常工作。只要它们已stdout路由回命令行,它也适用于某些模拟器。但是,有时模拟器将缺乏对转储结果的支持,或者您出于其他原因希望将结果路由到其他地方。在这些情况下,您应该定义UNITY_OUTPUT_CHAR宏。该宏一次接受一个字符(作为,因为这是最常用int的标准 C 函数的参数类型)。putchar你可以用你喜欢的任何函数调用来替换它。

想要的

我试图定义

但是我得到以下信息

我还尝试了在函数中调用 segger 并转换为 char * 的替代方法,如下所示

但不幸的是,当我调用 print_test 时,我没有看到任何输出

我应该如何定义宏以便我可以将输出发送到 segger 或者如果有更合适的替代方案是什么?

0 投票
1 回答
666 浏览

c - putchar 和 printf 的行为不符合预期

我正在完成 K&R 中的一些练习。练习 1-6 要求验证表达式getchar() != EOF是 0 还是 1。我明白为什么会这样,但是我编写的代码证明它没有按预期工作。我写了以下两个片段:

版本 1:

版本 2:

我的问题:

  1. 当我输入一个字符并使用版本一按 Enter 时,为什么我在屏幕上看不到 0 或 1?相反,我的光标移动到下一行的第一个位置,否则为空。我虽然putchar会发送cstdout.

  2. 虽然printf在第二个版本中使用确实会适当地产生 0 或 1,但它会为每个非 EOF 字符复制 1(我在我输入的每个字符的两个连续行上看到数字 1)。为什么?

非常感谢您的想法。如果有您认为有帮助的参考资料,请发送链接。

澄清:

我知道我正在分配 0 或 1 的 ca 值。这就是我想要做的,也是练习想要的。这也是我周围没有括号的原因c = getchar()。我的问题更多地涉及理解为什么输出不是我所期望的。很抱歉有任何混淆。

0 投票
3 回答
233 浏览

c - 使用 putchar 进行整数提升

该函数将写入为 unsigned char 的字符转换为错误时的 int 或 EOF ”:请参阅 Putchar。为了练习,我制作了这个程序:

它会导致一个无限循环输出...432432432432432...。我无法得到这种结果背后的原因。我希望循环一遍又一遍地打印相同的数字。我指的是 putchar('4') 的值,其中字符 '4' 应该提升为 int 52。为什么这种提升的行为不像我预期的那样?

0 投票
2 回答
82 浏览

c - 转义 \t 的多字符常量警告

如果我putchar('\\t');在尝试打印"\t"而不是实际选项卡时写,我会收到多字符常量警告。另一方面,如果我写,putchar('\\');我不会收到任何警告。在 ASCII 表中查看,没有字符'\\',只有'\'. 那么为什么没有警告呢?为什么'\\'一个字符但'\\t'不止一个?反斜杠只能用于转义后面的一个字符吗?

0 投票
3 回答
839 浏览

c - getchar() 和 putchar() 宏是怎样的?

根据我对 C 中宏的理解,它们是预定义的常量,将在整个程序中以其常量值使用,因此我们继续定义它们以避免进一步的复杂性并使代码更具可读性,因此阅读它的人会明白什么应该保持不变,什么不是。

我在这里和那里读过(C 编程一种现代方法,KN King),我们可以将这两个函数定义为宏。

由于我对 C 有点陌生,所以我无法理解如何将这两个定义为宏?

0 投票
5 回答
2758 浏览

c - C语言getchar()和putchar()

我是一个新的 C 语言学习者,我在下面遇到了一个问题,我试图打印出名字,但它没有打印出来。这是我尝试过的:

输出:

它应该打印出来name = abcd

我很感激,谢谢!

0 投票
2 回答
65 浏览

c - 这个c文件处理代码有什么问题?

我正在尝试从终端将内容写入文件中。正在创建文件,但内容未写入文件。

0 投票
4 回答
320 浏览

c - 请解释这个涉及 getchar 和 putter 的代码

我看不懂的c代码照片

我附上了一段我不完全理解的c代码的图片。我知道getchar从标准输出返回下一个字符putchar并将该字符放在标准输出上,但我不完全理解它EOF是什么以及这段代码到底在做什么。另外,我不明白如何像在 if 语句中那样添加或减去字母。