gpt4 book ai didi

c - 使用 write 函数将 double 写入标准输出

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

我以二进制格式存储 n 个 double ,如下所示:

int main(int argc, char** argv)
{
int k = atof(argv[1]);
int fd = open("./gen-double.bin", O_CREAT | O_WRONLY | O_TRUNC, 0666);

for(double i = 1.0; i < k; i *= 1.333)
{
write(fd, &i, sizeof(double));
}

return 0;
}

我想知道是否可以使用 write 函数输出它们:我尝试了以下代码,它给了我时髦的字符:

int main(int argc, char** argv)
{
int fd = open("./gen-double.bin", O_RDONLY);
double i;

while(read(fd, &i, sizeof(double)))
{
write(STDOUT_FILENO, &i, sizeof(double));
printf("\n");
}

return 0;
}

我需要将这些数字转换为 char 吗?

编辑

完成

int main(int argc, char** argv)
{
int fd = open("./gen-double.bin", O_RDONLY);
double i;
int res;
char buffer[11];

while(read(fd, &i, sizeof(double)))
{
res = sprintf(buffer, "%.10f", i);
buffer[11] = '\0';
write(STDOUT_FILENO, buffer, 11);
printf("\n");
}

return 0;
}

最佳答案

看来您正在将 double 的二进制编码写入 STDOUT。

printf(您通常会使用它)在将二进制 double 值发送到 STDOUT 之前将其解码为文本。

例如:1.0 在内存中编码为 3ff0 0000 0000 0000 ( see this )。

而文本 1.0 是字符“1”、“.”和 '0',编码为 0x31、0x2E、0x30 ( from here )。

关于c - 使用 write 函数将 double 写入标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40360553/

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