各位大神,问下float数组怎么转成char数组

[复制链接]
6026|24
 楼主| 长的帅怪我落 发表于 2016-9-18 15:49 | 显示全部楼层 |阅读模式
本帖最后由 长的帅怪我落 于 2016-9-19 08:48 编辑

比如说,我有float buff[2]={1.2,2.2};然后想得到char buf[2]={1.2,2.2}; 试过sprintf(buf, "%f", buff);。但是不知道怎么的,程序卡死了,在找问题中。。没办法,大学时候c语言挂了。。反正是因为函数的入口参数要求是char型,然后现在得到的数据是float的,根本不能进入函数,所以想转。。。现在知道char不能村小数,但是这种数据就没办法了吗?
NE5532 发表于 2016-9-18 16:06 | 显示全部楼层
整形数据可以等于1.2么?
 楼主| 长的帅怪我落 发表于 2016-9-18 16:29 | 显示全部楼层
NE5532 发表于 2016-9-18 16:06
整形数据可以等于1.2么?

不可以吗?我char型的数组不能放1.2这个数?内心受到1万点伤害、、
NE5532 发表于 2016-9-18 16:31 | 显示全部楼层
当然不可以,找你们C语言老师把学费要回来吧。
yichunshan 发表于 2016-9-18 16:34 | 显示全部楼层
长的帅怪我落 发表于 2016-9-18 16:29
不可以吗?我char型的数组不能放1.2这个数?内心受到1万点伤害、、

只要你喜欢,放还是可以放的,只是放了之后你程序会编译不过或者崩溃
 楼主| 长的帅怪我落 发表于 2016-9-18 16:36 | 显示全部楼层
NE5532 发表于 2016-9-18 16:31
当然不可以,找你们C语言老师把学费要回来吧。

比如是1.2是一串字符串。。这样不行吗?
 楼主| 长的帅怪我落 发表于 2016-9-18 16:39 | 显示全部楼层
yichunshan 发表于 2016-9-18 16:34
只要你喜欢,放还是可以放的,只是放了之后你程序会编译不过或者崩溃 ...

是的,我是这样搞的,然后程序崩溃了。。sprintf(buf, "%f", buff); 就是这句。。
yichunshan 发表于 2016-9-18 16:42 | 显示全部楼层
长的帅怪我落 发表于 2016-9-18 16:39
是的,我是这样搞的,然后程序崩溃了。。sprintf(buf, "%f", buff); 就是这句。。 ...

正经说,人家版主都已经说清楚啦,你拿整形定义浮点,NO,NO,NO
 楼主| 长的帅怪我落 发表于 2016-9-18 16:48 | 显示全部楼层
yichunshan 发表于 2016-9-18 16:42
正经说,人家版主都已经说清楚啦,你拿整形定义浮点,NO,NO,NO

看来只能buf[0]=1;buf[1]=.;buf[2]=2;这样总可以了吧。。
yichunshan 发表于 2016-9-18 16:56 | 显示全部楼层
长的帅怪我落 发表于 2016-9-18 16:48
看来只能buf[0]=1;buf[1]=.;buf[2]=2;这样总可以了吧。。

你觉得这样如何?
char buf[2][]={“1.2”,“2.2”};
 楼主| 长的帅怪我落 发表于 2016-9-18 17:11 | 显示全部楼层
yichunshan 发表于 2016-9-18 16:56
你觉得这样如何?
char buf[2][]={“1.2”,“2.2”};

荣我在研究研究、、、此时我内心是崩溃的
yichunshan 发表于 2016-9-18 17:12 | 显示全部楼层
长的帅怪我落 发表于 2016-9-18 17:11
荣我在研究研究、、、此时我内心是崩溃的

研究毛线,这样就行
NE5532 发表于 2016-9-18 17:14 | 显示全部楼层
长的帅怪我落 发表于 2016-9-18 16:48
看来只能buf[0]=1;buf[1]=.;buf[2]=2;这样总可以了吧。。

你也真不嫌累。
 楼主| 长的帅怪我落 发表于 2016-9-18 17:17 | 显示全部楼层
yichunshan 发表于 2016-9-18 17:12
研究毛线,这样就行

是这样的,我想把这个数显示到屏幕上,然后呢调用的函数要求这数据是char数组的,然后呢这数字丫的出来又是float的,整形的早显示了。。这不还在研究,至于你那二维数组。。我还真的研究研究。。
yichunshan 发表于 2016-9-18 17:28 | 显示全部楼层
长的帅怪我落 发表于 2016-9-18 17:17
是这样的,我想把这个数显示到屏幕上,然后呢调用的函数要求这数据是char数组的,然后呢这数字丫的出来又 ...

哦,显示屏接口对你来说是个黑盒子吗?如果发送数据函数动不了,也有个办法,数据是不是都是两位有效数字?如果都是的话,先转化,再发送
lizhengjie 发表于 2016-9-18 19:08 | 显示全部楼层

for(i = 0; i < N; i++)
{
    sprintf(buf[i], "%f", buff[i]);
}

你试试
 楼主| 长的帅怪我落 发表于 2016-9-18 19:40 | 显示全部楼层
lizhengjie 发表于 2016-9-18 19:08
for(i = 0; i < N; i++)
{
    sprintf(buf, "%f", buff);

单步跑了下sprintf,发现在sprintf里面一直出不来了。。不知道什么情况,ccs,不管了,刚好sprintf占时间,不准备用它了,我只能在研究研究了。。
gaoyang9992006 发表于 2016-9-19 08:19 | 显示全部楼层
楼主开玩笑了,转换后就是四舍五入了。
jqbkl007 发表于 2016-9-19 08:36 | 显示全部楼层
或者把数据扩大十倍,用的时候再缩小
 楼主| 长的帅怪我落 发表于 2016-9-19 11:07 | 显示全部楼层
我不会告诉你们我是buf[0]=1;buf2=[.];buf[3]=2;这样搞的,虽然限制毕竟大,但是也是我目前能想到的了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:多情剑客无情剑,无情剑配多情人

21

主题

838

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部