211006, C언어 입문 - day 10-2

Min Hyeok·2021년 10월 6일
0

C언어 개념 익히기

목록 보기
12/19

14-3, 14-4 합시다

14장, 표준입력함수

오늘은 뭐 별거없다.

일단, 14-3 "문자열을 정수로 변환하기"

말 그대로다. 문자열을 받아서 정수로 변환한다는 것임.
앞서 gets함수를 봤었는데, gets함수는 "문자열"로 입력을 받는 함수였다. 그런데 이걸 또 해석하자면, 내가 만약 정수를 넣고싶어서 gets로 입력을 받는 부분에 12345를 입력하면, 정수 만 이천 삼백 사십 오가 아니라 문자열 "12345"로 받는다는 소리다. 뭔소린지 알간?

그래서 이런 경우에는 아스키코드를 사용해줘야한다.

만약 아스키코드는 숫자로 '0'~'9'가 각각 48부터 정수로 변환되는데, 만약 내가 문자 '7'을 정수 7 로 변환시키고 싶으면 '7'-'0'을 해주는 식으로. 사용할 수 있다.

엥 그러면 12345는 어떻게해요?

표현하기 귀찮은데, ('1'-'0')10000 + ('2'-'0')1000 + ... 이런식으로 해주면 된다.

대충 이걸 코드로 짜보자면

#include <stdio.h>
#include <string.h>

int main() {
	
    int jari = 1, x = 0, count, i;
    char num_string[4] = "123";
    count = strlen(num_string);
    
    for (i=0 ; i<count-1 ; i++) jari *= 10;
    
    for (i=0 ; i<3 ; i++) {
    	x +=  (num_string[i] - '0') *jari;
        jari /= 10;
    }
    
    printf("&d\n", x);
   
}

요로케~ 나타내 줄 수가 있다.
아니면 뭐, 아예 문자열을 정수로 반환하는 함수를 만들어서 사용해줘도 되고. 물론 atoi라는 함수가 있긴 한데, 코딩 실력 올리려면 이렇게 짜보는게 이해가 빠르지 않을까 싶었다.

이제 14-4. 표준 입력 함수 scanf.

이건 평소에 너무 많이 써서, 그냥 본인은 머리에 틀어박혀있는 내용이다.

%c랑 %s만 안 헷갈리면 될듯.

그리고 공백 (" ")은 scanf에서 쓸 수 없으므로, 스페이스 띄워쓰기가 필요하면 gets함수를 사용하도록 하자.

이상, 14장은 여기까지!

0개의 댓글

관련 채용 정보