11. 숫자를 문자열로 변경하기 - (itoa), (rtos)
목표
숫자를 문자열로 변경하는 (itoa)
함수와 (rtos)
함수를 사용 해 봅시다.
숫자와 문자열의 차이점
사람이 보기에는 숫자 123
과 문자열 "123"
이 동일 해 보여도, 컴퓨터는 숫자와 문자열을 전혀 다른 데이터로 취급합니다. 숫자가 필요한 함수에 문자열을 주거나, 혹은 문자열이 필요한 함수에 숫자를 주게 되면 오류가 발생하게 됩니다.
따라서 문자열이 필요한 함수에 숫자를 입력하고 싶을 때는, 그 숫자를 문자열로 변경하는 함수들을 사용해야 합니다.
itoa & rtos
숫자에는 소숫점이 없는 정수와 소숫점이 포함되어 있는 실수 2가지가 있죠 그 중 정수를 문자열로 변환하는 함수는 (itoa)
이고, 실수를 문자열로 변환하는 함수는 (rtos)
입니다.
itoa는 Integer TO Alphabet의 약자이고, rtos는 Real TO String의 약자입니다. 두 함수 모두 결국 문자열로 변환하는건데, 직관적이지 않은 이름이 아쉽긴 하지만 어쩌겠습니까(ㅜㅜ)
정수는 실수에 포함되기 때문에
(rtos)
함수로 정수 또한 문자열로 변경할 수 있지만,(itoa)
함수로는 실수를 문자열로 변경할 수 없습니다.
날짜와 온도를 출력 해 봅시다
문자열을 하나로 합치는 함수로는
(strcat)
함수를 사용할 수 있습니다. 하지만(strcat)
은 숫자는 입력받지 못합니다. 따라서 숫자를(strcat)
으로 변환하기 위해서는 각 숫자를 문자열로 변환해야 합니다.(getint)
함수와(getreal)
함수로 숫자를 입력받은 후, 그 숫자들을 문자열로 변환하여(strcat)
함수로 하나의 문자열로 만들겠습니다.
1
2
3
4
5
6
7
8
(progn
(setq month (getint "\n오늘은 몇 월인가요? : "))
(setq date (getint "\n오늘은 몇 일인가요? : "))
(setq temperature (getreal "\n현재 온도를 입력 해 주세요 : "))
(setq msg (strcat "\n오늘은 " (itoa month) "월" (itoa date) "일이며, 현재 온도는 " (rtos temperature) "도 입니다!"))
(princ msg)
(princ)
)
(getint)
와(getreal)
함수로 날짜와 온도를 입력받아 각각의 변수에 저장합니다.(strcat)
함수로 각 문자열들을 하나의 문자열로 만들어 msg변수에 저장합니다. 이 때 숫자들을(itoa)
와(rtos)
함수를 이용해 문자열로 변환하여(strcat)
함수에 집어넣습니다.(princ)
함수로 생성한 문자열을 명령어 창에 출력합니다.