【发布时间】:2016-05-25 13:14:40
【问题描述】:
我需要将一个包含 4 个 double 值的数组发送到一个大小为 8 字节的字符缓冲区中,并且还想从字符数组中提取该值到 double 值以供其使用。
我正在尝试使用下面的代码,但没有得到正确的输出,因为 char str 的大小为 8 字节太小,无法存储 4 个双精度值!!
例如:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char str[8]={'\0'};
double x=-10.456678,p=12.678906,q=80.8956876,r=360.67,y,z,h,k;
sprintf(&str[0],"%2.6f",x);
sprintf(&str[1],"%2.6f",p);
sprintf(&str[2],"%2.6f",q);
sprintf(&str[3],%3.4f",r);
//Extracting the same from str
y=atof((char *)&str[0]);
z=atof((char *)&str[1]);
h=atof((char *)&str[2]);
k=atof((char *)&str[3]);
printf("\ny= %2.6f",y);
printf("\nz= %2.6f",z);
printf("\nh= %2.6f",h);
printf("\nk= %2.6f",k);
return 0;
}
谁能回答我如何向角色发送 4 个双精度值 8字节数组?
【问题讨论】:
-
减号 1:格式化您的代码。这是什么?你想问什么?
-
“我需要将一个包含 4 个双精度值的数组发送到一个大小为 8 字节的字符缓冲区”。好吧,你不能。 double 的内存大小为 8 个字节。您至少需要 32 个字节才能容纳其中的 4 个。
-
你需要
sizeof(double) * 4字节来保存双打。