如何在C语言中使用write()函数编写整数?

问题描述 投票:0回答:3

我是C语言上的菜鸟,试图使用write()函数显示整数。

这些是我的代码:

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

我想显示7,但是当我将n设置为一个大数字时,程序什么也不显示或其他奇怪的字符。

我想念什么?

c integer command
3个回答
1
投票

int之类的对象在内存中用各种位表示。 write例程恰好将内存的那些位传输到其目的地。

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

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

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

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

因此write是错误的例程,用于显示供人阅读的int值。相反,通常使用printf,如下所示:

printf("%d", n);

f中的printf代表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所需的大小。)


0
投票

[如果要在命令提示符下将其打印出来,请仅使用printf()

int n = 7;
printf("%i",n);

使用write()功能是否有特殊意图?如果是这样,请添加更多代码。


0
投票

Write函数是系统调用。它用于将缓冲区的内容写入声明的输出或流。您不应该使用write。相反,您必须使用printf(" ", ...)。您的情况:

printf("%d", n);

print("%d\n",n);

如果要写在一行上并做一个结束行(跳下一条)。

有关printf的更多信息,请参见:printf

© www.soinside.com 2019 - 2024. All rights reserved.