본문 바로가기
C언어

세이버의 C언어 강의 5강_서식문자 응용편

by 비원(Be one) 2018. 10. 7.
반응형

여러분 안녕하세요. 세이버입니다.

 

이번 강의에서는 지난 강의에서 배웠던 서식문자에 대하여 조금 더 확장해서 배워보도록 하겠습니다.


1. 실수형 서식문자를 사용해보자.

지난 강에서는 정수형 서식문자 %d만 사용했습니다.

서식 문자에 대한 개념은 지난 강을 참고하세요.

 

세이버의 C언어 강의 4강_좀 더 복잡하게 출력하기 : https://poci.tistory.com/6

 

세이버의 C언어 강의 4강_좀 더 복잡하게 출력하기

여러분 안녕하세요. 세이버입니다. 3강에서는 printf() 함수를 이용해서 한 문장만 출력하는 방법을 배웠습니다. 세이버의 C언어 강의 3강_간단한 문장 출력하기 : https://poci.tistory.com/5 세이버의 C언어 강..

poci.tistory.com

이번에는 다른 서식문자들도 사용해보겠습니다

%d는 4강에서 봤으니 생략하고 %f, %lf부터 시작하겠습니다.

 

%f와 %lf는 실수형 서식문자입니다.

프로그래밍 언어에서 실수는 유리수+무리수의 실수가 아니라 소수점이 있는 소수를 의미합니다.

 

헷갈리게 왜 실수라고 하는거냐...

근데 왜 실수형 서식문자는 2개나 있나요??

간단하게 말하자면 실수형 변수 타입에는 float와 double이 있는데, float는 %f를, double은 %lf를 기본으로 합니다.

바꿔서 사용해도 엄청 큰 문제는 없습니다.

 

둘의 차이점은 수의 범위와 바이트 차이인데, 이걸로 설명하다가는 분량이 너무 많아지므로 자세한 건 구글에 검색해보세요.

초보자분들은 그냥 "double(%lf)가 float(%f)보다 더 범위가 넓고 정확하구나." 정도만 아시면 됩니다.

 

설명은 여기까지 하고 실습으로 해보겠습니다.

실수형 서식문자는 정수형 서식문자 사용법과 크게 다르지 않습니다.

그냥 값만 실수형으로 써주기만 하면 나머진 똑같습니다.

 

근데 출력값을 보면 1.31이 아니라 1.310000이라고 되어있습니다.

1.31만 필요한데 뒤에 0000이 보기 번거롭다 하시는 분들은 출력할 실수의 자릿수를 정하실 수 있습니다.

 

방법은 서식문자에다가 .n(n은 소수점 밑의 자릿수)를 추가하시는 겁니다.

 

이렇게 %와 f 사이에 .2를 추가하면 소수점 밑으로 두 자리만 출력하겠다는 의미입니다.

 

그 외에는 딱히 큰 특징이 없기에 실수형은 여기서 마무리하겠습니다.

 

 

2. 문자형 서식문자를 사용해보자.

문자형은 말 그대로 한글이나 영어 같은문자들을 의미합니다

 

그럼 문자형은 별 차이가 있느냐?? 없습니다...

 

그러나 알아두셔야 할 것이 있습니다.

만약 이 강의를 여기까지 잘 따라오신 분들에게 "a를 출력하는 프로그램을 만들어 보세요."라고 하면

 

아마 대부분이 이렇게 하실 겁니다.

실행해보시면 알겠지만 이렇게 하면 오류가 납니다.

 

엥??

문자 하나를 출력하니 %c를 사용하는 게 맞고... a도 잘 입력했는데.... 왜 안될까...

 

오류 메시지의 ['a' undeclared]를 해석하면 [예고 없는 'a']입니다.

즉, 'a'가 선언되지 않았다는 의미입니다.

 

뭐야... a 썻잖아....

이 문제를 해결하기 위해서는 변수라는 게 무엇인지를 알아야 하지만

간단하게 말하면 컴파일러가 a를 변수라고 착각해서 이런 일이 생긴 겁니다..

변수는 사용하기 전에 먼저 선언을 해야 하기에 컴파일러가 이런 오류를 내는 거죠..

 

그럼 어떻게 이걸 변수가 아니라고 말해줘야 하나요?

컴파일러는 변수와 문자를 ' '로 구분합니다.

그러니 문자에 ' '를 씌우면 컴파일러가 문자로 인식해서 오류 없이 실행이 됩니다.

 

이렇게 ' '를 사용하면 오류없이 실행됩니다.

 

그럼 문자열은요???

문자열은 " "로 구분하기에 " "를 써주시면 됩니다.

 

 

 

3. 조금만 더 응용해보자.

알려드릴 건 다 알려드렸지만, 이건 약간의 팁이니 아셔도 되고 넘기셔도 됩니다.

 

글에는 정렬이 있습니다.

왼쪽 정렬

가운데 정렬

오른쪽 정렬

 

서식문자를 이용해서 숫자들을 정렬시킬 수 있습니다.

 

%nd(n은 폭의 수)를 이용하면 숫자의 폭을 지정할 수 있습니다.

 

숫자가 클수록 폭이 커집니다.

표로 설명하면 printf("%5d", 10);는 아래와 같이 출력되는 겁니다.

      1 0

 

printf("%10d", 10);는 이런 식인 거죠.

                1 0

 

이걸 오른쪽 정렬이라고 한다면 %-nd(n은 폭의 수)은 왼쪽 정렬입니다.

 

폭을 보여주기 위해 뒤에 ' 입니다 .'를 추가했습니다.
폭을 보여주기 위해 뒤에 ' 입니다 .'를 추가했습니다.

실수형에서도 사용할 수 있는데, %5f, %5.5f와 같이 사용할 수 있습니다.

이건 직접 실습해보시길 바랍니다.


이렇게 오늘은 다양한 자료형의 서식문자를 다루는 방법과 몇 가지 팁을 알려드렸습니다.

이걸로 출력은 마무리하고, 다음 강에서는 입력을 배워보도록 하겠습니다.

오늘도 수고하셨습니다.

 


정리

- 실수(소수)형에는 %f, %lf가 있는데, %lf가 좀 더 정교하다.

- %.nf(n은 숫자)를 이용해 소수점 몇 자리까지 출력할 건지 정할 수 있다.

- 문자형을 출력할 때는 출력할 문자에 ''를 붙이고, 문자열에는 ""를 붙인다.

- % nd(n은 숫자)를 이용해 폭을 지정할 수 있고, %-nd(n은 숫자)으로 왼쪽 정렬을 할 수도 있다.


강의가 유익하셨거나 마음에 드셨으면 구독과 좋아요, 댓글 부탁드립니다.

궁금하신 점이나 질문은 댓글이나 메일을 남겨주세요.

 

poci5003@gmail.com

 

반응형