请问大家'itoa': requires ANSI-style prototy的问题

GALATEA 2012-05-23 11:22:47
我是在单片机上开发的,itoa()函数是不是在单片机上没有啊?
...全文
639 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
danagedan 2012-05-24
  • 打赏
  • 举报
回复
很多编译器只有atoi(字符转整数) 而没有itoa函数
我怀疑你这个编译器应该没有的 自己到软件安装目录的头文件文件夹里看看 stdlib中有没有

如果没有的话 给你推荐一段成熟的代码 直接可以用
void itoaTest(int num,char str[] )
{
int sign;
unsigned char i=0,j=0;
unsigned char temp[10];
sign=num;
do
{
temp[i] = sign%10+'0';
sign/=10;
i++;
}while(sign>0);
while(i>0)
{
str[j] = temp[i-1];
j++;
i--;
}
str[j]='\0';
}
zhangxiaopeng0829 2012-05-23
  • 打赏
  • 举报
回复
stdlib.h里面的itoa()是windows里面的特有功能,在类unix里面好像是用的sprintf,我如果没记错的话是这样的,至于单片机上是不是有这个功能函数,还要看你的编译器的库文件里面是否具体定义了。
net_friends 2012-05-23
  • 打赏
  • 举报
回复
这解释多清楚明了
dsoyy 2012-05-23
  • 打赏
  • 举报
回复
这个函数是C标准库里面的,你的口文件没有包含这个库自然就不会有,其实可以找到源码,自己添加函数内容啊

看看我这个,刚刚验证过了:

#include <string.h>

static void reverse (char *);



void itoa(int n, char *s)
{
int sign;
char *t = s;

if ((sign = n) < 0)
n = -n;

do
{
*s++ = n % 10 + '0';
}
while ((n /= 10) >0);

if (sign < 0)
*s++ = '-';

*s = '\0';

reverse(t);
}

void reverse(char *s)
{
int c;
char *t;

for (t = s + (strlen(s) - 1); s < t; s++, t-- )
{
c = *s;
*s = *t;
*t = c;
}
}

main()
{
char *s ;
itoa(12232,s);


printf("%s",s);


getch();
}

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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