模拟实现atoi - 字符串中的数字字符转化为整形数
Posted 再吃一个橘子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟实现atoi - 字符串中的数字字符转化为整形数相关的知识,希望对你有一定的参考价值。
atoi函数
语法:
#include < stdlib.h >
int atoi(const char *str );
功能:
将字符串里的数字字符转化为整形数。返回整形值。
详细:
nt atoi(const char *str) 函数会扫描参数 str字符串,跳过前面的空白字符(例如空格,tab缩进)等,直到遇上数字或正负符号才开始做转换。而在遇到非数字或字符串结束符(‘\\0’)才结束转换,并将结果返回。如果 str不能转换成 int 或者 str 为空字符串,那么将返回 0 。
说明:
当第一个字符不能识别为数字时,函数将停止读入输入字符串。
例如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *ptr1 = "-12345.12";
char *ptr2 = "+1234w34";
char *ptr3 = " 456er12";
char *ptr4 = "789 123";
int a,b,c,d;
a = atoi(ptr1);
b = atoi(ptr2);
c = atoi(ptr3);
d = atoi(ptr4);
printf("a = %d, b = %d, c = %d, d = %d\\n", a,b,c,d);
return 0;
}
输出结果:a = -12345, b = 1234, c = 456, d = 789
关于atoi函数,知道这些就足够了。
模拟实现atoi函数
#include <stdio.h>
#include<stdio.h>
int StrToInt(char* str)
{
long number = 0;
int flag = 1; //判断符号位
if (str == NULL)
{
printf("str is NULL\\n");
return 0;
}
while (*str == ' ') //空格
{
str++;
}
if (*str == '-') //符号位
{
flag = -1;
str++;
}
while ((*str >= '0') && (*str <= '9'))//转化
{
number = number * 10 + *str - '0';
str++;
}
return flag * number;
}
int main()
{
char* str = "-123456";
//char* str = NULL;
int tmp = StrToInt(str);
printf("%d", tmp);
return 0;
}
输出结果:-123456
以上是关于模拟实现atoi - 字符串中的数字字符转化为整形数的主要内容,如果未能解决你的问题,请参考以下文章