소연의_개발일지

printf 함수

printf함수를 이용하면 문자열 이외의 데이터를 다양한 형태로 출력하는 것이 가능하다.

""(큰 따옴표)를 사용해서 문자열을 표현한다. 따라서 큰따옴표로 묶인 문자열을 전달하면서  printf함수를 호출하면, 전달된 문자열이 모니터상에 출력된다.

 

printf의 f는 formatted(서식이 지정된)을 의미한다. printf라는 함수의 이름에는 '서식이 지정된 출력'이라는 뜻이 담겨있다.

그래서 문자열, 문자, 숫자에 따라 다른 서식을 지정하여(%d, %s등)출력하는 것이다.

 

출력하기 예시:

#include <stdio.h>

int main(void)
{
	printf("Hello Everybody\\n"); // Hello Everybody
	printf("%d\\n", 1234); // 1234
	printf("%d %d\\n", 10, 20); // 10 20
	return 0;
 }

printf 함수는 첫 번째 인자로 전달된 문자열을 출력한다.

printf("출력할 문자열", 출력할 값1, 출력할 값2, ...);

여기서 출력할 문자열은 따옴표로 둘러싸인 문자열이다.

출력할 값은 %d, %f, %c 등의 서식 지정자를 사용하여 출력 형식을 지정할 수 있다.(이건 나중에 설명).

 

예를 들어, 정수형 변수 x의 값을 출력하려면 다음과 같이 사용할 수 있다.

int x = 10;
printf("x의 값은 %d입니다.", x);

이 코드는 "x의 값은 10입니다."라는 문자열을 출력한다.

서식 지정자 %d는 정수형 값을 출력할 때 사용된다.


print 함수 예제

#include <stdio> 
int main(void)
{
	printf("제 이름은 홍길동입니다.\n");
	printf("제 나이는 %d살이고요.\n", 20); // 제 나이는 20살이고요.
	printf("제가 사는 곳의 번지수는 %d-%d 입니다.\n", 123, 456); // 제가 사는 곳의 번지수는 123-456입니다.
	return 0;
 }

 


특수문자의 출력의 필요성

문자열에 포함이 되는 특수문자는 작은 따옴표로 묶어 독립된 문자상수로 존재할 수도 있다.

즉, 알파벳 문자와 마찬가지로 다음과 같이 표현하는 것도 가능하다.

cahr ch ='n';

그렇다면 특수문자, 즉 이스케이프 시퀀스가 필요한 이유는 무엇인가?

printf("오늘의 날씨는 "흐림"입니다. 오늘 하루종일 비가 내일 예정입니다.");

그러나 여기에서 문제가 발생합니다. 큰 따옴표의 시작과 끝을 문자열의 시작과 끝으로 보기 때문에 printf함수 내 삽입된 내용은 다음과 같이 해석된다.

"오늘의 날씨는 "
흐림
"입니다. 오늘 하루종일 비가 내릴 예정입니다."

따라서 컴파일을 하면 여러 개의 에러가 발생한다. 하나의 문자열로 인식되길 바랬지만, 컴파일러는 그렇게 생각해 주지 않는다는 것이다. 이런 문제 해결을 위해 특수문자가 존재한다. 

C언어에서는  특수문자 \ 를 사용하여 문자열의 일부로 큰따음표를 포함시킬 수 있다. 

 

앞에서 말한 호출문을 변경시켜보자.

printf("오늘의 날씨는 \"흐림\"입니다. 오늘 하루종일 비가 내일 예정입니다.");

이렇게 수정하면, 원하는 문자열의 출력을 확인할 수 있다.

 

특수문자의 종류는 다음과 같다.

특수문자 의미하는 바
\" 큰 따옴표 출력
\' 작은 따옴표 출력
\t 수평 탭. 정렬할 때 자주 사용한다.
\n 개 행(new line): 한 줄 내려줄때 사용한다.
\b 백스페이스
\? 물음표 출력
\\ 역슬래쉬 출력
\r 캐리지 리턴

 

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!