您的位置:首页 > 其它

不使用c的任何库函数 实现字符串到整数的转换 整数到字符串的转换

2017-05-04 10:55 447 查看
转载请标明出处:http://www.cnblogs.com/NongSi-Net/p/6805844.html

今天主要总结下:完成编程:

1、除printf函数之外,不用任何c语言库函数,实现将字符串转化为整数的函数myatoi(可以支持负整数的转化)。

2、除printf函数之外,不用任何c语言库函数,实现将整数转化为字符串的函数myitoa(可以支持负整数的转化)。

如果想理解这个问题,必须知道一个知识:

字符‘0’+一个整数,则得到这个整数的字符型。反之,字符型-字符‘0’则得到整数值。

如:‘0’+9=‘9’;

‘9’-‘0’=9;

代码如下:

/*
============================================================================
Name        : mystoi.c
Author      :
Version     :
Copyright   : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>

void mylength(int a,int *lenth)
{
int i = 0;
if(lenth == NULL)
{
printf("mylength fun error\n");
}
do
{
a = a / 10;
i++;
}while(a);
*lenth = i;
}

void reserve(int lenth,char buf[])
{
int i = 0;
char temp;
for(i = 0;i<lenth/2;i++)
{
temp = buf[i];
buf[i] = buf[lenth-i-1];
buf[lenth-i-1] = temp;
}
}
//1.除printf函数之外,不用任何c语言库函数,实现将整数转化为字符串的函数myitoa(可以支持负整数的转化)。
void myitoa(int a,char buf[])
{
int i = 0;
int sign;
int length = 0;
mylength(a,&length);
if((sign = a) < 0)
a = -a;
for(i = 0;i<length;i++)
{
buf[i] = '0' + a % 10;
a = a / 10;
}
if(sign < 0)
{
buf[i++] = '-';
reserve(length+1,buf);
}else
{
reserve(length,buf);
}
}

void slength(char buf[],int *length)
{
int i = 0;
while(buf[i])
{
i++;
};
*length = i;
}
//2、除printf函数之外,不用任何c语言库函数,
//实现将字符串转化为整数的函数myatoi(可以支持负整数的转化)。
int myatoi(char buf[])
{
int sum = 0;
int i = 0;
int flag = 1;
while(buf[i])
{
if(buf[i] == ' ')
i++;
else if(buf[i] == '+')
{
i++;
flag = 1;
}
else if(buf[i] == '-')
{
i++;
flag = -1;
}
else if(buf[i]>='0'&&buf[i]<='9')
{
sum = sum*10+(buf[i] - '0');
i++;
}
else
return 0;
}
sum = sum * flag;
return sum;
}

int main(void) {
int abc = 123456789;
char arr[1024] = "--+1836";
int length = 0;
char buf[1024] = {0};
printf("the following thing is myitoa...Int---->string\n\n");
myitoa(abc,buf);
printf("the string is %s.\n\n",buf);
printf("the following thing is myatoi...string---->Int\n\n");
slength(arr,&length);
printf("the string's length is %d.\n\n",length);
printf("the Intger is %d.\n\n",myatoi(arr));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐