ft_toupper 구현

yeonjkim·2021년 5월 25일
0

42seoul-libft

목록 보기
35/43

1. ft_toupper 용도

* int c를 파라미터로 받아 c가 아스키 코드 상 소문자이면 대문자로 바꾸는 함수

2. ft_toupper 프로토타입

int		ft_toupper(int c)
int c : 소문자이면 대문자로 바꿀 아스키 코드 상 숫자

3. 구현 시 유의사항

  • ft_toupper 함수의 인자로 int형 변수 c를 받음.
    따라서 이 c를 char로 변환해서 비교하던지, 혹은 아스키 코드표 상의 번호로 대문자인지 소문자인지 판별.

  • 하단의 코드에서는 아스키 코드 상의 번호로 판별하였음.

4. ft_toupper의 인자로 int형 변수를 받는 이유

  • 이는 이 함수가 c언어의 초기부터 존재했던 아주 오래된 표준 함수이기 때문.

  • 이전 버전의 c는 함수 프로토타입을 가지고 있지 않았다.
    따라서 함수는 하단과 같이 선언되지 않은 상태나 'unknown' 인자로 선언되었다.

//non-prototype declaration
void *memchr();

이러한 함수를 호출 시, 모든 인자는 automatic argument promotion을 받게 되는데, 이는 이러한 함수가 char형이나 short형을 받지 못함을 의미한다.

그러한 함수는 항상 caller에 의해 함수 내부적으로 int형으로 받아들이도록 추진되기 때문에 int형 인자가 사용된 것이다.

5. 코드 구현

#include "libft.h"

int             ft_toupper(int c)
{
        if (c >= 97 && c <= 122)
        {
                c = c - 32;
        }
        return (c);
}

6. 코드 구현 방법

(1) c가 대문자인지 판별(아스키 코드 상 97번 ~ 122번)한 후 소문자이면 대문자로 바꾸기(- 32)
(2) c 반환

0개의 댓글