将数字字符串转换为数字(仅限定点整数)my_atoi()

编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)
例如:“12“   返回12
 “-123“ 返回-123

函数原型:int char_int(char *str){}



</pre><pre name="code" class="cpp">#include<stdio.h>
#include<assert.h>
#include<string.h>
#include <ctype.h>
int char_int1(char *str)//没考虑到开头空字符,或tab键
{
    int ret=0,i=1;
    if(!(48<=*str++<=57)))
	   return 0;
		if(*str=='-')
	{
	   i=-1;
	   str++;
	}
     while(*str)
	 {
	    if(!(48<=*str<=57)))
	   return 0;
          ret= ret*10+*str - '0';
		  str++;
	 
	 }
	 return i*ret;
}
int char_int2(char *str)//定点整数数字字符串转化为所对应的数字
{
   //用一个字符指针保存字符串 str 的首地址
    char *q=str; 
	int ret=0;
     if('-'==*str)
	 {
	    if(!(48<=*++str<=57));//assert(!(48<=*++str<=57))断言,当()中为假时,报错
		return 0;
        char *p=str;
		for(int i=0;i<strlen(p);i++)
	 {
	    ret=ret*10+p[i]-'0';
	 }
		return -ret;
	 }
	 else
	 {
		 if(!(48<=*str++<=57));// assert(!(48<=*str++<=57))断言,当()中为假时,报错
		  return 0;
	 for(int i=0;i<strlen(q);i++)
	 {
	    ret=ret*10+q[i]-'0';
	 }
return ret;	 }




}


int my_atoi(char *str) //atoi()函数在math.h中,自己实现的myh_atoi()
{
	int flag = 1;
	int  value = 0;
	int num = 0;
	int count = 0;
	//判断空白字符
	while(isspace(*str))//isspace(),判断空字符函数,include <ctype.h>
	{
		str++;
	}
	//判断正负号
	if(*str == '-')
	{
		flag = -1;
		str++;
	}
	if(*str == '+')
	{
		str++;
	}
	//isdigtil(),判断是不是数字的函数,include <ctype.h>
	while(*str != '\0')
	{
		
               value = value * 10 + (*str -'0');
		str++;
	}
	return flag * value;
}
int main()
{
   char *a="12d34";//char *a="1234"  或 char*a="-1234"
   int s=char_int1 (a);//int s=char_int2(a);
   printf("字符串 %s",a);
   printf("\n数字   %d\n",s);
   char *b="     1234";
   int t=my_aoi(b);
   printf("字符串 %s",b);
   printf("\n数字   %d\n",t);
   
   return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值