怎么将整数转换为字符串?

bfdeh 2008-08-24 03:17:15
问题是这样的,有一些整数,长度不定,如123,1455,22220……,现在想把它们转换成字符串"123","1455","22220"……,有没有什么好的办法?

我想到的办法是将该数的各个位取出来,分别转换为字符串,然后再将各短的字符串连接成一个长字符串。
这个办法好像有点笨,希望大家能给个好点的办法。

最好是C语言实现!
...全文
338 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bfdeh 2008-08-24
  • 打赏
  • 举报
回复
多谢各位的回答,我在网上搜了一下itoa的函数原型,然后稍作改进,已经满足我要求了。

char *itoa(long int value,int radix)
{
int i,j,sign;
char ps[32],str[32];
if((radix>16) || (radix<2))
return "incorrect radix!";
sign = 0;
if(value<0)
{
sign=-1;
value=-value;
}
i=0;
do
{
if((value % radix) > 9)
ps[i] = value % radix + 55;
else
ps[i] = value % radix + 48 ;
i++;
}while((value /= radix) > 0);

if(sign<0)
ps[i]='-';
else i--;

for(j=i;j>=0;j--)
str[i-j]=ps[j];
str[i+1]='\0';
return str;
}
baichuan0698 2008-08-24
  • 打赏
  • 举报
回复

#include <stdio.h>

#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
typedef char * va_list;

char *TF_itoa(int value, char *string, int radix)
{
/* 转换一个整数到字符串。radix为转换基数 */

char tmpString[12];
char *p;
char *pString;
bool minus = false;

pString = string;
p = &tmpString[11];
*p = '\0';

if (radix<2 || radix>26)
{
return 0;
}

if (value < 0)
{
value = -value;
minus = true;
}

if (0 == value)
{
*--p = '0';
}

while (value > 0)
{
*--p = "0123456789abcdefghijklmnopqrstuvwxyz"[value % radix];
value = value / radix;
}

if (minus)
{
*--p = '-';
}

while (*p)
{
*string++ = *p++;
}

*string = '\0';

return pString;

}

_石头_ 2008-08-24
  • 打赏
  • 举报
回复
单片机资源有限,下面这个代码尽量避免了调用库函数和周期较长的运算指令。

int s_atoi(char *str) //参数是待转换的字符串。
{
unsigned int number=0;
while(*str)
{
*str-='0';
if(number!=0)
number=(number<<3)+(number<<1); //代替x10的进位运算。
number+=*str;
str++;
}
return (int)number;
}
_石头_ 2008-08-24
  • 打赏
  • 举报
回复
单片机?呵呵,要说明白嘛!
yljhs 2008-08-24
  • 打赏
  • 举报
回复

main()
{
int x,y,i;
char res[20]={0};
x = 12345;
y=0;
i =0;
while (x)
{
res[i] = (x % 10) + 48;
x = x / 10;
i++;
}
for (i;i>=0;i--)
printf("%c",res[i]);
getch();
}
bfdeh 2008-08-24
  • 打赏
  • 举报
回复
不好意思,有一点忘了说了,我不是在PC上编程,而是在单片机上实现!
_石头_ 2008-08-24
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
char str[20];
int number=1234567890;
sprintf(str,"%d",number);
printf("%s\n",str);
return 0;
}

lzr4304061988012 2008-08-24
  • 打赏
  • 举报
回复
好类似的帖啊
wangdeqie 2008-08-24
  • 打赏
  • 举报
回复

//这么写
#include <stdio.h>
#include <stdlib.h>

void main()
{
char p[20];
int i=7412;
itoa(i,p,10);
printf("%s\n",p);
}
  • 打赏
  • 举报
回复
ltoa
eatsweetpotato 2008-08-24
  • 打赏
  • 举报
回复
有函数,好像是sprintf

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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