atoi 라 이브 러 리 함수 작성
7693 단어 함수.
이 문 제 는 고려 해 야 할 상황 이 정말 많다. 예 를 들 어 전 달 된 문자열 포인터 가 NULL 이면;전 달 된 문자열 이 비어 있 으 면;전 송 된 문자열 에 불법 문자 가 포함 되 어 있다 면;전 달 된 문자열 에 + - 기호 가 포함 되 어 있다 면;만약 문자열 이 대표 하 는 정수 가 정수 가 표시 할 수 있 는 범 위 를 초과 한다 면.............................................................................
1 int myError = 0;
2
3 int atoi(const char *str)
4 {
5 bool is_f = false;
6 long long result = 0;
7
8 myError = 0;
9 if (str == NULL || *str == 0)
10 {
11 myError = -1;
12 return 0;
13 }
14 if (*str == '+' || *str == '-')
15 {
16 if (*str == '-')
17 is_f = true;
18 ++str;
19 if (*str == 0)
20 {
21 myError = -1;
22 return 0;
23 }
24 }
25 while (*str)
26 {
27 if (!(*str >= '0' && *str <= '9') ||
28 (!is_f && result > 0x7fffffff)
29 || (is_f && result > 0x80000000))
30 {
31 myError = -1;
32 return 0;
33 }
34 result = result * 10 + (*str - '0');
35 ++str;
36 }
37 if((!is_f && result > 0x7fffffff)
38 || (is_f && result > 0x80000000))
39 {
40 myError = -1;
41 return 0;
42 }
43 return is_f ? -((int)result) : (int)result;
44 }
위의 코드 는 잘못된 코드 를 my Error 전역 변수 에 저장 합 니 다. 반환 값 으로 오 류 를 표시 하면 문자열 이 대표 하 는 전체 수치 와 헷 갈 릴 수 있 기 때 문 입 니 다.위의 코드 는 위 에 적 힌 여러 가지 상황 에 대응 하 는 것 처럼 스스로 테스트 했 지만 코드 의 질 이 높 지 않 아 붙 여 공유 만 할 수 있 고 아직 고려 하지 않 은 상황 이 있 을 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
예를 들어 urlopen의 데이터 사용법데이터 매개 변수는 선택할 수 있습니다. 데이터를 추가하려면 바이트 인코딩 형식의 내용, 즉bytes 형식이면bytes () 함수를 통해 전환할 수 있습니다. 또한 이 데이터 매개 변수를 전달하면 GET 방식으로 요...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.