gpt4 book ai didi

c - 当只接受 const void * 类型参数时如何通过 write() 调用传递 "double"?

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:25 27 4
gpt4 key购买 nike

鉴于 double temp = 6.5; 我如何将它传递给 UNIX write()系统调用:

write(fd[1], (WTF?), 100)

  1. fd[1] 是一个文件描述符。
  2. 100 是一个固定的缓冲区大小,用于处理大数值,以防万一。

我把它放在中间是什么?我已经尝试了 itoa&temp*temp(char) temp 以及其他一些方法在谷歌上搜索不同的解决方案,但到目前为止还没有运气。老实说,我什至不知道 const void * 是什么类型。我只知道如果我直接将字符串(例如“Hello World”)传递给第二个参数,它会停止提示。

最佳答案

write 的第二个参数是指向内存中某个位置的指针,第三个参数是要从内存中的该位置写入文件的字节数。所以你的代码将是:

double temp = 6.5;
write(fd[1], &temp, sizeof(temp));

不过,我不确定这是否正是您想要的。需要明确的是,这会将您的 double 的二进制表示形式写入文件。在大多数平台上,这将是以下一系列字节(此处以十六进制表示):

00 00 00 00 00 00 26 64

If this is supposed to be a text file, then you'll want to convert your number to a string first.

double temp = 6.5;
char buffer[20];
sprintf(buffer, "%g", temp);
write(fd[1], buffer, strlen(buffer));

这会将“6.5”写入您的文件。

关于c - 当只接受 const void * 类型参数时如何通过 write() 调用传递 "double"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12487759/

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