이번 강의는 그냥 참고만 하셔도 되는 강의입니다.
그래도 한 번 보고 소스도 작성해보시길 바랍니다.
printf함수는 문자열을 출력하는 함수입니다.
C언어는 큰 따옴표를 사용해서 문자열을 표현합니다. 따라서 큰 따옴표안에 묶인 문자열을 전달하여 printf함수를 호출하면, 전달된 문자열을 모니터상에 출력이 됩니다.
위 코드에서 \n문자가 삽입되었는데 전에 배웠었죠? 얘를 특수문자라고 한다는 것을요.
말 그대로 일반 문자의 의미가 아닌 특수한 의미를 담고있는 문자입니다.
특수문자는 작은 따옴표로 묶어서 문자상수로도 존재할 수 있습니다.
저번에 본 char변수 안에 알파벳을 저장하는 것 처럼요
근데 이 특수문자(이스케이프 시퀀스) 가 필요한 이유는 무엇일까요?
다음과 같은 문장을 출력하는 프로그램을 작성하기로 해봅시다.
옆집 아이가 "엉엉" 울었다.
아래는 소스입니다.
그러나 이 코드는 에러가 발생합니다. 우리는 이 문장을 하나의 문자열로 인식되길 바랬지만, 컴파일러는 그렇게 인식하지 않습니다. 그렇다면 어떻게 해야 저 큰 따옴표를 출력 할 수 있을까요?
이 때 특수문자를 사용하는 겁니다. 큰 따옴표는 문자열의 시작과 끝으로 인식하니 큰 따옴표 자체를 출력하려면 큰 따옴표 앞에 \문자를 붙이게 되면 이 상황이 해결됩니다.
그럼 소스를 다음과 같이 바꿔봅시다.
그럼 우리가 원하는 문장이 출력될 겁니다.
이번에는 특수문자의 종류에 대해 봅시다.
모두 기억할 필요는 없고 지금은 \n과 \"만 기억합시다. 궁금하시면 직접 확인을 해보셔도 됩니다.
printf의 f가 의미하는 것을 다들 궁금해 하실텐데요. 이 f는 formatted를 의미합니다. printf함수의 뜻은 서식이 지정된 출력이라는 뜻입니다. 이 말은 출력양식이 만들어진 상태에서 출력을 한다라는 뜻입니다.
그래서 우리는 여태 큰 따옴표안에 %d, %f같은 서식문자를 이용해 정수, 실수를 출력할 수 있었던 겁니다.
예제 하나 볼까요?
실행결과
별거 없습니다. 우리는 %x라는 서식문자는 16진수 정수를 출력하는 서식문자라고 배웠습니다. 여기서 x를 소문자로 하면 알파벳이 소문자로, 대문자로 쓰면 알파벳이 대문자로 나옵니다.
printf문장을 잘 봐봅시다.
printf함수 인자는 총 3개가 전달되었습니다. 인자가 무엇인지에 대해서는 나중에 함수부분을 배울 때 배우지만 지금은 그냥 함수의 괄호안에 들어가는 문자, 또는 변수나 상수 등등..을 말하는 거라고 생각합시다.
갯수 구분은 ,(콤마)를 기준으로 합니다. 그래서 위 문장의 인자 갯수는 3개입니다.
일단 첫번 째 인자는 무조건 전달해야하고 두 번째부터는 있을 수도 있고 없을 수도 있습니다.
이것을 '가변인자' 라고 합니다.
첫 번째 인자의 서식문자 갯수만큼 인자 수가 늘어나죠.
그럼 첫 번째 인자에 서식문자가 5개 존재하면, 총 인자의 갯수는 몇개 일까요?
'6개'입니다. 이해가 되시나요?
다음으로 서식문자의 종류에 대해 보겠습니다.
사실 위 표보다 더 많습니다. 이것을 다 외울 필요는 없고 필요할 때 참고만 합시다.
우리가 C언어를 배울 동안 사용할 서식문자는 몇 개 안되기 때문에 차차 배우면서 설명하겠습니다.
다음으로 scanf함수에 대해 보겠습니다.
printf는 서식화된 문자열을 출력하는 함수입니다. scanf는 그걸 '입력'받는 함수이지요.
scanf에서 인자는 이를 의미합니다.
어떤 형식으로 입력할 것인가?
어디에 저장할 것인가?
%d는 10진수 정수의 형태로 데이터를 입력 받고,
%o는 8진수 양의 정수의 형태로 입력 받으며,
%x는 16진수 양의 정수의 형태로 입력 받습니다.
이렇듯 printf함수의 해석에서 '출력'을 '입력'으로만 바꾸면 scanf함수에서의 해석이 됩니다.
예제 봅시다.
실행결과
위 예제에서는 10진수, 8진수, 16진수 순으로 입력받고 있습니다.
따라서 모두 같은 10을 입력했다 하더라도 다르게 해석된 것입니다.
이번 강의는 여기서 마치겠습니다.
드디어!!! 재미없는 암기파트가 끝났습니다.
이제 많은 이해가 필요한 약간 난이도가 상승한 부분을 배우게 될겁니다.
난이도가 높다고 해서 걱정되나요? 괜찮습니다. 그 만큼 재미도 UP!이니까요.
다음 강의에서는 반복문에 대해 다룹니다.
다음 강의때 봅시다~!
'C언어 강의' 카테고리의 다른 글
(C언어 강의) Chapter -13 반복명령을 위한 키워드 (do~while) (0) | 2016.08.03 |
---|---|
(C언어 강의) Chapter -12 반복명령을 위한 키워드(while) (0) | 2016.07.28 |
(C언어 강의) Chapter -10 상수와 형 변환 -02 (0) | 2016.07.25 |
(C언어 강의) Chapter -10 상수와 형 변환 -01 (0) | 2016.07.24 |
(C언어 강의) Chapter -09 여러가지 자료형 (3) | 2016.07.08 |