C 언어 시 뮬 레이 션 실현 atoi 함수 의 실례 상세 설명

2280 단어 C 언어atoi 함수
C 언어 시 뮬 레이 션 실현 atoi 함수 의 실례 상세 설명
atoi 함수,주요 기능 은 하나의 문자열 을 정수 로 바 꾸 는 것 입 니 다.예 를 들 어'12345'C>12345.그러나 실현 과정 에서 우 리 는 전면적 인 고려 가 부족 해서 비교적 중요 한 몇 가 지 를 빠 뜨 릴 수 밖 에 없다.오늘 은 atoi 함 수 를 실현 하 는 데 주의해 야 할 부분 을 정리 하 자.
1.NULL 포인터
2.빈 문자열
3.공백 문자
4.플러스 와 마이너스 문제
5.넘 침 문제
6.이상 문자 처리
다음은 코드 를 보 겠 습 니 다.(구체 적 인 몇 가지 문제 처 리 는 코드 의 주석 에서 설명 합 니 다)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <assert.h>

//             
enum STATE
{
  VALID, //  
  INVALID,//  
};
enum STATE state = INVALID;
int my_atoi(const char *str)
{
  int flag = 1;
  long long ret = 0;//    int          ,           。
  //   
  assert(str);
  //    
  if (*str == "\0")
  {
    return 0;
  }
  //    
  while (isspace(*str))//   isspace         
  {
    str++;
  }
  //     
  if (*str == '-')
  {
    flag = -1;
    str++;
  }
  if (*str == '+')
  {
    str++;
  }
  //
  while (*str)
  {
    //if (*str >= '0'&&*str <= '9')
    if (isdigit(*str))//   isdigit         
    {
      ret = ret * 10 + flag*(*str - '0');
      //      
      if (ret > INT_MAX || ret < INT_MIN)
      {
        return ret;
      }
    }
    //    
    else
    {
      break;
    }
    str++;
  }
  state = VALID;
  return ret;
}
int main()
{
  char *p = "12345";
  char *q = " -12345";
  int ret = my_atoi(p);
  int ret2 = my_atoi(q);
  printf("%d
", ret); printf("%d
", ret2); system("pause"); return 0; }
실행 결과:

이상 은 C 언어 시 뮬 레이 션 으로 atoi 함 수 를 실현 하 는 실례 입 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 지역사회 에 가서 토론 을 하 십시오.읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기