比如:输入字符串“1234”,返回数字1234。
输入字符串“+1234”,返回数字1234.
输入字符串“-1234”,返回数字-1234.
#include <stdio.h>
int my_atoi(char s[10])
{
int flag=1; //代表符号位的正负号
int ret=0; //用于存储取出来的数
char *p=s;
if(*p=='-')
{
flag=-1; //如果输入的是负数,则先将符号位置为负号
}
if(*p=='+'||*p=='-')
{
p++; //如果输入的第一位是符号位,则跳过它,指针指向下一位
}
while(*p!='\0')
{
if((*p>='0')&&(*p<='9'))
{
ret=ret*10+*p-'0'; //*p-'0'指的是每一次取出来的那个数字
p++;
}
else //如果输入的不是数字,则指针指向下一位
p++;
}
return flag*ret; //取出的数与符号位(即flag=1或flag=-1)相乘
}
int main()
{
int n; //最后要输出的对应的整数
char str10];
gets(str); //接收一个字符串
n=my_atoi(str);
printf("%d\n",n);
return 0;
}
本文出自 “追寻内心的声音” 博客,转载请与作者联系!