您的位置:首页 > 编程语言 > C语言/C++

C语言实现atoi和itoa(字符串与数字之间的转化)

2017-09-05 23:42 633 查看
#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <vld.h>
//字符转数字("123"->123,"12a3"->12,"a12"->0) 遇到字母就退出

int Myatoi(const char *str)
{
assert(str!=NULL);
if(str==NULL)
{
return 0;
}
int sum = 0;
while(isdigit(*str))
{
sum = sum*10 + *str - '0';
str++;
}
return sum;
}

//数字转字符 123-》“123”

void StrReverse(char *str)
{
char *p = str;
char tmp;
while(*p!='\0')
{
p++;
}
p--;

for(;str<=p;str++,p--)
{
tmp = *str;
*str = *p;
*p = tmp;
}
}

int GetFigure(int num)
{
int count=0;
while(num!=0)
{
count++;
num /= 10;
}
return count;
}
char *Myitoa(int num)
{
char *p=(char*)malloc(GetFigure(num)+1 * sizeof(char));
int i=0,j=0;
while(num!=0)
{
p[i++] = num%10 + '0';
num /= 10;
}
p[i]='\0';

StrReverse(p);
return p;
}

int main()
{
printf("%d\n",Myatoi("a12"));
printf("%d\n",Myatoi("123"));
printf("%d\n",Myatoi("12a3"));

char str5[20];
printf("%s\n",Myitoa(123456789));
char *str = Myitoa(123456789);
printf("%s\n",str);
free(str);

return 0;
}


打印结果:

0

123

12

123456789

123456789
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 字符串