易码技术论坛

 找回密码
 加入易码
搜索
查看: 106798|回复: 2

两个函数

[复制链接]
发表于 2004-11-7 16:52:00 | 显示全部楼层
这两个个函数很有用的~~^_^
关于字符串,Lava现成的函数还不够全面。
 楼主| 发表于 2004-11-10 16:19:00 | 显示全部楼层
对阿...很多的基本函数都要自己制造...就连字符串输入函数也得自己造一个...

14365_3477_6047.rar

5 KB, 下载次数: 204

 楼主| 发表于 2004-11-4 17:23:41 | 显示全部楼层 |阅读模式
int itoa(long num,int str,char radix)
//integer to array
//把num转化成相对应的字符串,把结果放在str指向的字符串中,输出字符串的进制取决于radix,它的值可以是2到36的任何值
{
char i,ch,neg;
neg=0;
if(num<0){num=abs(num);neg=1;}
else if(num==0)strcpy(str,"0");
while(num) {
i=num%radix;
num=num/radix;
if(i>=0&&i<=9)ch=i|0x30;
if(i>9&&i<36)ch=i+55;
memmove(str+1,str,strlen(str)+1);
*str=ch;
}
if(neg)
  {
  memmove(str+1,str,strlen(str)+1);
  *str='-';
  }
return str;
}

int atoi(int str,char radix)
//array to integer
//把str指向的字符串转化为一个整数,radix为进制.取值为2-36;
{
long num;
int i,sign;
char ch;
num=0;


ch=0xff;
if(*str=='-'){sign=-1;i=1;} else {sign=1;i=0;}
for(;ch;i++)
{
ch=*(str+i);
if(isdigit(ch))num=(num*radix)+(ch&0xf); else if(islower(ch))num=(num*radix)+(ch-87);
else if(isupper(ch))num=(num*radix)+(ch-55);

}
return sign*num;
}

void main()
{
char string[20];
printf(itoa(-78,string,10));
printf("\n%d",atoi("-7788",16));
}
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-26 05:46 , Processed in 0.010294 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表