gpt4 book ai didi

c - 如何在 C 中使用 write() 函数写入整数?

转载 作者:行者123 更新时间:2023-11-30 14:36:00 24 4
gpt4 key购买 nike

我是 C 菜鸟,正在尝试使用 write()函数显示一个整数。

这是我的代码:

int n = 7;
write(1, &n, 4);

我想显示7 ,但是当我设置 n 时,程序没有显示任何内容或其他奇怪的字符到一个很大的数字。

我错过了什么?

最佳答案

类似 int 的对象在内存中用不同的位表示。 write例程将这些内存位准确地传输到其目的地。

终端并非设计用于显示任意内存位。它们不会将这些位解释为 int或其他对象,然后显示该解释。通常,我们将字符传输到终端。更具体地说,我们发送代表字符的代码。终端被设计为接收这些代码并显示小文字图片(字符、字形、表情符号等)。

要使终端显示“7”,我们需要向其发送“7”的代码。字符的通用代码系统是 ASCII(美国信息交换标准代码)。 “7”的 ASCII 代码是 55。因此,如果您这样做:

char x = 55;
write(1, &x, 1);

如果使用 ASCII,终端将在显示屏上绘制“7”。

所以write用于显示 int 的例程是错误的人类阅读的值(value)观。相反,您通常使用 printf ,像这样:

printf("%d", n);

fprintf代表formatted 。它检查代表 n 中的值的位。并将表示的值格式化为供人类阅读的字符,然后将这些字符写入标准输出。

如果您想使用write要将字符传输到终端,可以使用 sprintf仅获取 printf 的格式部分没有打印部分。对于初学者来说,此代码将起作用:

char buffer[80];                            // Make space for sprintf to work in.
int LengthUsed = sprintf(buffer, "%d", n); // Format n in decimal.
write(1, buffer, LengthUsed); // Write the characters.

(更复杂的代码将使缓冲区大小适应 sprintf 的需要。)

关于c - 如何在 C 中使用 write() 函数写入整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com