打印

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

[复制链接]
5359|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 长的帅怪我落 于 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语言老师把学费要回来吧。

使用特权

评论回复
5
yichunshan| | 2016-9-18 16:34 | 只看该作者
长的帅怪我落 发表于 2016-9-18 16:29
不可以吗?我char型的数组不能放1.2这个数?内心受到1万点伤害、、

只要你喜欢,放还是可以放的,只是放了之后你程序会编译不过或者崩溃

使用特权

评论回复
6
长的帅怪我落|  楼主 | 2016-9-18 16:36 | 只看该作者
NE5532 发表于 2016-9-18 16:31
当然不可以,找你们C语言老师把学费要回来吧。

比如是1.2是一串字符串。。这样不行吗?

使用特权

评论回复
7
长的帅怪我落|  楼主 | 2016-9-18 16:39 | 只看该作者
yichunshan 发表于 2016-9-18 16:34
只要你喜欢,放还是可以放的,只是放了之后你程序会编译不过或者崩溃 ...

是的,我是这样搞的,然后程序崩溃了。。sprintf(buf, "%f", buff); 就是这句。。

使用特权

评论回复
8
yichunshan| | 2016-9-18 16:42 | 只看该作者
长的帅怪我落 发表于 2016-9-18 16:39
是的,我是这样搞的,然后程序崩溃了。。sprintf(buf, "%f", buff); 就是这句。。 ...

正经说,人家版主都已经说清楚啦,你拿整形定义浮点,NO,NO,NO

使用特权

评论回复
9
长的帅怪我落|  楼主 | 2016-9-18 16:48 | 只看该作者
yichunshan 发表于 2016-9-18 16:42
正经说,人家版主都已经说清楚啦,你拿整形定义浮点,NO,NO,NO

看来只能buf[0]=1;buf[1]=.;buf[2]=2;这样总可以了吧。。

使用特权

评论回复
10
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”};

使用特权

评论回复
11
长的帅怪我落|  楼主 | 2016-9-18 17:11 | 只看该作者
yichunshan 发表于 2016-9-18 16:56
你觉得这样如何?
char buf[2][]={“1.2”,“2.2”};

荣我在研究研究、、、此时我内心是崩溃的

使用特权

评论回复
12
yichunshan| | 2016-9-18 17:12 | 只看该作者
长的帅怪我落 发表于 2016-9-18 17:11
荣我在研究研究、、、此时我内心是崩溃的

研究毛线,这样就行

使用特权

评论回复
13
NE5532| | 2016-9-18 17:14 | 只看该作者
长的帅怪我落 发表于 2016-9-18 16:48
看来只能buf[0]=1;buf[1]=.;buf[2]=2;这样总可以了吧。。

你也真不嫌累。

使用特权

评论回复
14
长的帅怪我落|  楼主 | 2016-9-18 17:17 | 只看该作者
yichunshan 发表于 2016-9-18 17:12
研究毛线,这样就行

是这样的,我想把这个数显示到屏幕上,然后呢调用的函数要求这数据是char数组的,然后呢这数字丫的出来又是float的,整形的早显示了。。这不还在研究,至于你那二维数组。。我还真的研究研究。。

使用特权

评论回复
15
yichunshan| | 2016-9-18 17:28 | 只看该作者
长的帅怪我落 发表于 2016-9-18 17:17
是这样的,我想把这个数显示到屏幕上,然后呢调用的函数要求这数据是char数组的,然后呢这数字丫的出来又 ...

哦,显示屏接口对你来说是个黑盒子吗?如果发送数据函数动不了,也有个办法,数据是不是都是两位有效数字?如果都是的话,先转化,再发送

使用特权

评论回复
16
lizhengjie| | 2016-9-18 19:08 | 只看该作者

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

你试试

使用特权

评论回复
17
长的帅怪我落|  楼主 | 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占时间,不准备用它了,我只能在研究研究了。。

使用特权

评论回复
18
gaoyang9992006| | 2016-9-19 08:19 | 只看该作者
楼主开玩笑了,转换后就是四舍五入了。

使用特权

评论回复
19
jqbkl007| | 2016-9-19 08:36 | 只看该作者
或者把数据扩大十倍,用的时候再缩小

使用特权

评论回复
20
长的帅怪我落|  楼主 | 2016-9-19 11:07 | 只看该作者
我不会告诉你们我是buf[0]=1;buf2=[.];buf[3]=2;这样搞的,虽然限制毕竟大,但是也是我目前能想到的了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

21

主题

838

帖子

7

粉丝