如何将浮点型数据存入char数组

兔子先生-zhang 2012-05-09 01:40:03
假如我现在有float两个变量,要把它存进一个char型的数组中
float x,y;
x = y = 3.14;
怎么把x,y存进一个char型的数组???


...全文
1734 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子先生-zhang 2012-05-10
  • 打赏
  • 举报
回复
谢谢你们的回答,我用sprintf解决了。。。
兔子先生-zhang 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
引用 9 楼 的回复:
引用 8 楼 xianglitian 的回复:
CString的Format
这个百度一下就有了
http://wenku.baidu.com/view/dd04db2c7375a417866f8f36.html


首先谢谢你。
我百度了,也看了你发的网址里的文章了,知道如何把float转成cstring型的,但是我要的是char型的

额,我用soc……
[/Quote]

谢谢你的回答。

可能是我表述不清楚。

不过我已经解决了,用sprintf。

memccy我试了试,但是存进去的是乱码,不知道是不是我用menccy没有用对。。。
kobos 2012-05-10
  • 打赏
  • 举报
回复
可以把cstring格式转化一下嘛
youngwolf 2012-05-09
  • 打赏
  • 举报
回复
强转一下即可:
(const char*) &f
向立天 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 xianglitian 的回复:
CString的Format
这个百度一下就有了
http://wenku.baidu.com/view/dd04db2c7375a417866f8f36.html


首先谢谢你。
我百度了,也看了你发的网址里的文章了,知道如何把float转成cstring型的,但是我要的是char型的

额,我用socket编程,要从客户端实时……
[/Quote]
我第一次回复就已经说清楚了两种情况
可是你好像还是不明白自己的需求
再看你刚说的这个应用直接发即可
而且不建议用char
应该用BYTE
比如要发送x的值
sendto(sockClient,(BYTE*)&x,sizeof(float), (SOCKADDR*)&addrSrv,len);
兔子先生-zhang 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
直接发送浮点数:
float f;
sendto(sockClient, &f, sizeof(float), 0, (SOCKADDR*)&addrSrv, len);

接收:
char buf[128];
recvfrom(...); //接收并把结果放在buf中
float f = *(float*) buf;
//到这里,f就完成了从发送到接收的整个过程。……
[/Quote]

谢谢你的回答。
我试了你的方法,编译不通过啊error C2664: 'sendto' : cannot convert parameter 2 from 'float *' to 'const char *'

从字符数组中提取float我会,就是不会把它放在字符数组中
youngwolf 2012-05-09
  • 打赏
  • 举报
回复
直接发送浮点数:
float f;
sendto(sockClient, &f, sizeof(float), 0, (SOCKADDR*)&addrSrv, len);

接收:
char buf[128];
recvfrom(...); //接收并把结果放在buf中
float f = *(float*) buf;
//到这里,f就完成了从发送到接收的整个过程。

上面的代码唯一可能出问题的地方在字节序,不过绝大部分情况是不考虑的,因为用的都是字节序一样的机器。
兔子先生-zhang 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xianglitian 的回复:]
CString的Format
这个百度一下就有了
http://wenku.baidu.com/view/dd04db2c7375a417866f8f36.html
[/Quote]

首先谢谢你。
我百度了,也看了你发的网址里的文章了,知道如何把float转成cstring型的,但是我要的是char型的

额,我用socket编程,要从客户端实时的传回点的坐标值,因为点的坐标值是float型的,而然后:
sendto(sockClient,sendBuf,strlen(sendBuf)+1,0, (SOCKADDR*)&addrSrv,len);其中char sendBuf[100];是个字符数组,所以我就想着如果把float存进字符数组,然后在利用上面的代码发送坐标,你有没有更好的办法可以不需要存进字符数组中?
向立天 2012-05-09
  • 打赏
  • 举报
回复
CString的Format
这个百度一下就有了
http://wenku.baidu.com/view/dd04db2c7375a417866f8f36.html
三条猫 2012-05-09
  • 打赏
  • 举报
回复
CString.Format(_T("%.02f"), x);
兔子先生-zhang 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
你什么意思?
如果是想把3.14变成字符串就用CString的Format
如果实现吧x、y转成字符数组就用memcpy
[/Quote]

存进去之后char数组应该是'3''.''1''4'''...这种形式的
兔子先生-zhang 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
float x,y;
char s[100] = {0};
int len = sizeof(float);
x = y = 3.14;
memcpy(s, &x, len);
memcpy(s + len, &y, len);
[/Quote]

你好,我按照你的代码测试,用printf("%s",s);输出时,出现乱码,怎么回事?
兔子先生-zhang 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
你什么意思?
如果是想把3.14变成字符串就用CString的Format
如果实现吧x、y转成字符数组就用memcpy
[/Quote]

你好,我是想把x,y的值也就是3.14存进字符数组,可以具体说一下Cstring的format怎么用吗?
flypig917 2012-05-09
  • 打赏
  • 举报
回复
float x,y;
char s[100] = {0};
int len = sizeof(float);
x = y = 3.14;
memcpy(s, &x, len);
memcpy(s + len, &y, len);
向立天 2012-05-09
  • 打赏
  • 举报
回复
你什么意思?
如果是想把3.14变成字符串就用CString的Format
如果实现吧x、y转成字符数组就用memcpy
三条猫 2012-05-09
  • 打赏
  • 举报
回复
UNION
{
float a;
char buf[4];
}

或者

memcpy

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧