将double值数组转换为字符缓冲区

时间:2016-02-14 18:41:35

标签: c string bit-shift

我需要将一个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 个答案:

答案 0 :(得分:0)

将这么多数据存储到如此少的内存中是不可能的。但是你能不能更多地解释一下你最终想要做什么,因为现在我不明白为什么你需要将数字转换为字符串并将其转换回来?

如果您只想将数字存储为字符串,则可以使用例如存储每个数字的字符串数组:

char numbers[4][20];
sprintf(numbers[0], "%f", x);
...
printf("%s", numbers[0]);

希望这有帮助!