itoa与atoi ftoa与atof的实现
来源:互联网 发布:淘宝如何选商品 编辑:程序博客网 时间:2024/05/16 14:32
itoa与atoi ,有的系统库中有提供这两个函数的实现,前两天也自己尝试写写这两个函数,代码实现如下:
/*============itoa=============*/
/*把num转换成字符串存放在str 指向的字符串里*/
int myitoa(int num, char *str)
{
int temp;
int sign = 0; //标记num的符号
char *p;
if (str == NULL) return -1;
p = str;
/*负数的话取绝对值并改变标记*/
if (num < 0)
{
num = 0 - num;
sign = 1;
}
/*把数从低位放进字符串*/
do
{
temp = num % 10; //取num的最后一位
*(p++) = temp + '0';
}while ((num /= 10) != 0);
/*是负数的时候添加‘-’*/
if (sign == 1)
{
*(p++) = '-';
}
/*给字符串的末尾添加 ''/0*/
*(p+1) = '/0';
/*字符串逆置*/
while(str < p)
{
*str = *str + *p;
*p = *str - *p;
*str = *str - *p;
str++;
p--;
}
return 0;
}
/*========atoi========*/
/*把str指向的字符串转换成数字*/
#include <stdlib.h>
int myatoi(const char *str)
{
int sum = 0;
int sign = 0;
if (str == NULL)
{
perror("The string is NULL!/n");
exit(-1);
}
/*判断是否为负数*/
if (*str == '-')
{
sign = 1;
str++;
}
/*转换*/
while (*str != '/0')
{
sum = 10*sum + (*str - '0');
str++;
}
/*判断是否为负数*/
if(sign == 1)
{
sum = 0 - sum;
}
return sum;
}
另外还写 float 与 字符串 转换,代码如下
/*
*File : ftoa.c
*/
/*Float ===> String*/
int ftoa(char *str, float num, int n) //n是转换的精度,即是字符串'.'后有几位小数
{
int sumI;
float sumF;
int sign = 0;
int temp;
int count = 0;
char *p;
char *pp;
if(str == NULL) return -1;
p = str;
/*Is less than 0*/
if(num < 0)
{
sign = 1;
num = 0 - num;
}
sumI = (int)num; //sumI is the part of int
sumF = num - sumI; //sumF is the part of float
/*Int ===> String*/
do
{
temp = sumI % 10;
*(str++) = temp + '0';
}while((sumI = sumI /10) != 0);
/*******End*******/
if(sign == 1)
{
*(str++) = '-';
}
pp = str;
pp--;
while(p < pp)
{
*p = *p + *pp;
*pp = *p - *pp;
*p = *p -*pp;
p++;
pp--;
}
*(str++) = '.'; //point
/*Float ===> String*/
do
{
temp = (int)(sumF*10);
*(str++) = temp + '0';
if((++count) == n)
break;
sumF = sumF*10 - temp;
}while(!(sumF > -0.000001 && sumF < 0.000001));
*str = '/0';
return 0;
}
/*
* File : atof.c
*/
/*String ===> Float*/
float atof(const char *str)
{
float sumF = 0;
int sumI = 0;
int sign = 0;
if(str == NULL) return -1;
/*Is less than 0 ?*/
if(*str == '-')
{
sign = 1;
str++;
}
/*The part of int*/
while(*str != '.')
{
sumI = 10*sumI + (*str - '0');
str++;
}
/*Let p point to the end*/
while(*str != '/0')
{
str++;
}
str--; //Your know!
/*The part of float*/
while(*str != '.')
{
sumF = 0.1*sumF + (*str - '0');
str--;
}
sumF = 0.1*sumF;
sumF += sumI;
if(sign == 1)
{
sumF = 0 - sumF;
}
return sumF;
}
以上的代码简单测试通过,可能写得很粗糙,健壮性不是很好,若有什么地方不足或不对,欢迎指出!
- itoa与atoi ftoa与atof的实现
- C/C++ atoi、atof与itoa函数的实现
- 自定义 ftoa 与 itoa
- C++ 类型转换 atoi atol atof itoa ftoa <stdlib.h>
- atoi 与 itoa的实现
- itoa与atoi的实现
- atoi 与 itoa的实现
- atoi() 与 itoa()函数的内部实现
- atoi() 与 itoa()函数的内部实现
- atoi() 与 itoa()函数的内部实现
- atoi与itoa的C++实现
- atoi() 与 itoa()函数的内部实现
- atoi() 与 itoa()函数的内部实现
- atoi() 与 itoa()函数的内部实现
- C函数的实现(strcpy,atoi,atof,itoa,reverse)
- atoi与itoa代码实现
- C++ 类型转换 atoi atol atof <stdlib.h>, itoa ftoa char <---> string
- C语言实现atoi,itoa和atof
- 欢迎
- 青岛印象
- C#.net
- 关于TD 8.0 SP2 汉化
- 纯粹B/S方式实现InfoPath的设计和运行时--Web Builder
- itoa与atoi ftoa与atof的实现
- sql语句使用总结
- linux pkgconfig作用
- 李嘉诚语录/汪涵语录/史玉柱趣事
- ASP——为实现前台和数据库分离写的数据库操作函数
- VC 控件在IE8下不能调试的解决方法
- 怎么获得积分我日
- WCF与AJAX编程开发实践(3):支持ASP.NET AJAX的WCF服务
- Preverifying Class Files