社区
C语言
帖子详情
如何将任何类型的转化成 char* ; 或者把char * 转型成int,或者float?
chrix
2004-03-22 11:50:27
是这样的,一个负责UI显示的函数参数必须是char*的,但是我的结果可能是float的,用强制转型肯定会丢失信息,怎么样把它转化成char*呢?反过来又怎么办呢?
还有一个前提是不能用c标准库函数,因为是在嵌入式系统里面
...全文
225
18
打赏
收藏
如何将任何类型的转化成 char* ; 或者把char * 转型成int,或者float?
是这样的,一个负责UI显示的函数参数必须是char*的,但是我的结果可能是float的,用强制转型肯定会丢失信息,怎么样把它转化成char*呢?反过来又怎么办呢? 还有一个前提是不能用c标准库函数,因为是在嵌入式系统里面
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lbaby
2004-03-23
打赏
举报
回复
记得以前在文档区看到过一篇这样的文章,可惜现在找不到了
如果能采用标准库是最好不过了,
如果不能用,但手头上有一种标准库的实现,仿写一个也末尝不是一个好办法。
可惜现在手头上没有这些,只好写一个,可能有什么地方有差错
建议去找一下gcc的库的源文件,仿写应该是很好写的。
int a2i(const char *str)
{
int tmp = 0;
char neg = 0;/* 是否是负数*/
if(*str == '-')
{ neg =1 ;
str++;
}
while( *str)
{
if( (*str > '0') && (*str <= '9') ) /*认为char *中的字符所采用的记数基数是10 */
{ tmp = tmp*10 + *str -'0' ;}
str ++;
}
if( neg )
{
tmp = -tmp;
}
return tmp;
}
#include <stdio.h>
int main(void)
{
char *str ="-12345a6a";
printf("%d",a2i(str));
return 0;
}
wlk
2004-03-23
打赏
举报
回复
float f=0.2;
char temp[32];
memset(temp,0,sizeof(temp));
sprintf(temp,"%5.2f",f);
yxzamy
2004-03-23
打赏
举报
回复
char ss[50]
for(i=0;i<n;i++)
{
ss[i]=(char)(s[i]+48)
}
如果这样强制转换不可以的话
for(i=0;i<n;i++)
{if(s[i]==0)
ss[i]='0';
else if(s[i]==1)
ss[i]='1';
……
}
这样总可以吧? 我就不信,int变不成char
tass
2004-03-23
打赏
举报
回复
up
yxzamy
2004-03-22
打赏
举报
回复
假设是求f
float c;
int b,s[50];
b=int(f);
c=f-b;
for(i=0;c!=0;i++)
{c=c*10;
s[i]=int(c);
c=c-s[i];
}
整数部分都在b里面,小数在s里面,可以了吧?
chrix
2004-03-22
打赏
举报
回复
怎么写?
我没有头绪……
langziji
2004-03-22
打赏
举报
回复
肯定不能进行强制转换,你可以自己写把浮点转成char*的字符串的程序呀
chrix
2004-03-22
打赏
举报
回复
没有人知道吗?
chrix
2004-03-22
打赏
举报
回复
TO winter_sui(头上有个包) :
是8154.97这种形式
chrix
2004-03-22
打赏
举报
回复
TO: yxzamy(读不懂)
在很多嵌入式系统里面,char可以转成int,int不能转成char
原因很简单,int占用的存储空间比char大。
感谢你的热心。
yxzamy
2004-03-22
打赏
举报
回复
有很多问题是可以自己解决的,不要太以来别人的函数了,我宁愿自己写。
yxzamy
2004-03-22
打赏
举报
回复
楼主啊,不是我的代码有问题,是你没有想明白问题啊,我都放在两个int里了,你不会在把他放到一个char数组里?int和char是可以很容易转换的,你要是不知道的话就不要随便批评,回去好好的看看书。
winter_sui
2004-03-22
打赏
举报
回复
是哪种显示方式?
比如 f = 8154.97;
是显示成:8154.97还是0.815497E4
chrix
2004-03-22
打赏
举报
回复
我想要的是不用库函数的实现方法……
谢谢各位
chrix
2004-03-22
打赏
举报
回复
sprintf好像是库函数…………
zxl_lim
2004-03-22
打赏
举报
回复
好象有atoi(..) itoa(..)什么的一类函数
查查MSDN
langziji(IT的民工) 的也是好方法
langziji
2004-03-22
打赏
举报
回复
float fv = 3.12;
char temp[32];
sprintf(temp, "%f", fv);
=======================
temp里面的内容:"3.12",可能还有0.然后就可以打印出来了。
chrix
2004-03-22
打赏
举报
回复
楼上的,我想要的是把float型转换成char*类型然后作为参数传给一个函数,而不是要把float转化成两个int型来表示
BTW,你的代码有很多问题。
【C++】
int
转
char
*、
char
*转
int
、
float
转
char
*、
char
*转
float
方法汇总及踩坑指南
本博客提供C++不同数据
类型
转换的踩坑记录。
C++ 中
类型
转换 xml
Char
* 与
Char
* 转换,
Char
*与
int
转换,
Char
*与
Float
转换,
int
与portNumBits转换
C++ 中
类型
转换 xml
Char
* 与
Char
* 转换,
Char
*与
int
转换,
Char
*与
Float
转换,
int
与portNumBits转换
VS2019 C++ const
char
*
类型
的实参与
char
*
类型
的形参不兼容解决办法
1 前言 使用Visual Studio 2019时经常会出现const
char
*
类型
的实参与
char
*
类型
的形参不兼容。对此有两种解决办法。 2 解决方法 法1 将结构体中定义的
char
* 前面加上 "const"修饰,具体如下所示: #include <iostream> using namespace std; class Student { public: //
char
*name; //错误!!! const
char
*name; //需要在这里写上 c
浅谈C/C++/Qt里的
类型
转换(
char
*、string、
int
、double、
float
、QString、QByteArray之间相互转化)
浅谈C/C++里的
类型
转换(
char
*、string、
int
之间相互转化)
有关
int
,
float
,double型与字符串
char
*
类型
的相互转换
atoi、atof、itoa、itow函数是windows平台下实现字符串与数值相互转换的函数; 下面看下这几个函数的声明: 1,atoi 原型:
int
atoi ( const
char
* str ); 作用:将字符串转为
int
型; 2,atof 原型: double
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章