自己编写代码实现atoi和itoa函数的功能
1. atoi(ascii to integer)函数:把字符串转换成整形数的一个函数,检测到非数字字符时停止转换。
atoi函数的实现代码:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
int my_atoi(char *ptr)
{
int i,k = 0;
int flag = 1;
int len = strlen(ptr);
int result = 0;
if(*ptr == '-') //判断是否为负数
{
flag = -1;
ptr++;
}
for(i = 0; i < len; i++)
{
if(ptr[i] >= '0' && ptr[i] <= '9') //限制输入的字符为数字
{
k = ptr[i] - '0'; //将字符转换为数字
result = result*10 + k; //按位相加
}
else
{
break;
}
}
return result * flag;
}
int main()
{
char ptr[MAX_SIZE];
int sum=0;
printf("please input a string:");
scanf("%s",ptr);
sum = my_atoi(ptr); //调用函数
printf("The result of str to num is: %d\n",sum);
return 0;
}
2. itoa函数:将任意类型的数字转换为字符串
itoa函数的实现代码:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
char *my_itoa(int num)
{
int i = 0;
static char s[MAX_SIZE] = {0};
int len = 0;
int temp = 0;
while(num != 0)
{
s[i] = (num % 10) + '0'; //取余分离出整数的最低位,再转化为字符
num = num/10; //依次分离个十百千...位
i++;
}
s[i] = '\0';
len = strlen(s);
for(i = 0; i < len/2 ; i++) //逆序输出
{
temp = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = temp;
}
return s;
}
int main()
{
int num;
printf("please input a num:\n");
scanf("%d",&num);
char *result = my_itoa(num); //调用输出
printf("the string is: %s\n",result);
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容