atoi()函数的实现
2015-09-10 22:28
239 查看
atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。
atoi()函数实现的代码:
/*
* name:xif
* coder:xifan@2010@yahoo.cn
* time:08.20.2012
* file_name:my_atoi.c
* function:int my_atoi(char* pstr)
*/
int my_atoi(char* pstr)
{
int Ret_Integer = 0;
int Integer_sign = 1;
/*
* 判断指针是否为空
*/
if(pstr == NULL)
{
printf("Pointer is NULL\n");
return 0;
}
/*
* 跳过前面的空格字符
*/
while(isspace(*pstr) == 0)
{
pstr++;
}
/*
* 判断正负号
* 如果是正号,指针指向下一个字符
* 如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符
*/
if(*pstr == '-')
{
Integer_sign = -1;
}
if(*pstr == '-' || *pstr == '+')
{
pstr++;
}
/*
* 把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer
*/
while(*pstr >= '0' && *pstr <= '9')
{
Ret_Integer = Ret_Integer * 10 + *pstr - '0';
pstr++;
}
Ret_Integer = Integer_sign * Ret_Integer;
return Ret_Integer;
}
现在贴出运行my_atoi()的结果,定义的主函数为:int main ()
int main()
{
char a[] = "-100";
char b[] = "456";
int c = 0;
int my_atoi(char*);
c = atoi(a) + atoi(b);
printf("atoi(a)=%d\n",atoi(a));
printf("atoi(b)=%d\n",atoi(b));
printf("c = %d\n",c);
return 0;
}
运行结果:
atoi()函数实现的代码:
/*
* name:xif
* coder:xifan@2010@yahoo.cn
* time:08.20.2012
* file_name:my_atoi.c
* function:int my_atoi(char* pstr)
*/
int my_atoi(char* pstr)
{
int Ret_Integer = 0;
int Integer_sign = 1;
/*
* 判断指针是否为空
*/
if(pstr == NULL)
{
printf("Pointer is NULL\n");
return 0;
}
/*
* 跳过前面的空格字符
*/
while(isspace(*pstr) == 0)
{
pstr++;
}
/*
* 判断正负号
* 如果是正号,指针指向下一个字符
* 如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符
*/
if(*pstr == '-')
{
Integer_sign = -1;
}
if(*pstr == '-' || *pstr == '+')
{
pstr++;
}
/*
* 把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer
*/
while(*pstr >= '0' && *pstr <= '9')
{
Ret_Integer = Ret_Integer * 10 + *pstr - '0';
pstr++;
}
Ret_Integer = Integer_sign * Ret_Integer;
return Ret_Integer;
}
现在贴出运行my_atoi()的结果,定义的主函数为:int main ()
int main()
{
char a[] = "-100";
char b[] = "456";
int c = 0;
int my_atoi(char*);
c = atoi(a) + atoi(b);
printf("atoi(a)=%d\n",atoi(a));
printf("atoi(b)=%d\n",atoi(b));
printf("c = %d\n",c);
return 0;
}
运行结果:
相关文章推荐
- Linux系统下查看CPU、内存负载情况
- 0909作业
- [LeetCode]: 226:Invert Binary Tree
- Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll组件)的使用
- mysql 存储引擎对比
- c++中字符数组与字符串的转换
- 金融分析之股票相关历史数据爬虫地址
- 文字处理软件
- c++11可变参数模板
- Ubuntu14.04下,Tomcat8+Nginx+memcache配置服务器集群session共享
- Teapot
- Linux 计划任务
- 设计模式-行为型之责任链模式
- 中高级PHP开发者应该掌握哪些技术?
- Wiz笔记发布博客工具无法获取分类修复
- Codeforce385C 树状数组+素因子分解
- C++的学习心得
- Linux Tools
- ANGULAR JS WATCH监听使用
- 数据结构之双向循环链表操作4-(插入,删除,建立等)