본문 바로가기
IT/C언어

[비와이][C언어] 02 - printf와 형식 지정자

by BeeWhy 2021. 6. 22.

가장 첫 강의 자료에서 hello world를 출력하는 걸 한 적이 있습니다. 이번에는 printf와 그 출력 형식을 지정할 수 있는 지정자에 대해서 알아보겠습니다.

 

printf는 "hello world" 와 같은 문자열을 출력할 수도 있지만, 다양한 값들을 출력할 수 있습니다.

아래를 보시면 그 내용에 대한 것입니다.

 

정수형

정수형에서는 의문이 갈만한 내용은 없으실 거라 생각합니다.

단, %u는 주의하셔야 됩니다. 만약 %u의 인자로 음의 정수를 입력을 하면 그 결과는 어떻게 될까요?

 

#include <stdio.h>

int main(void)
{
	printf("%u", -10);

	return 0;
}

결과

-10을 입력하였는데, 그 결과가 4294967286 이라는 결과가 나왔습니다.

지난 자료에 있는 자료형에서 "1의 보수" 를 생각해보시면 됩니다.

다만 단위가 int형인 4바이트의 데이터이기 때문에 0번 비트부터 31번 비트까지 고려해야합니다.

실수형

문자형

문자형에서 %c와 %s의 차이는 하나의 문자만 출력하는건 %c이고, 문자열을 출력하는 것은 %s입니다.

 

포인터

포인터는 나중에 나올 개념이긴 한데, 데이터가 저장된 주소를 출력하는 타입이라고 현재 단계에서는 알아두고 가시면 될 것 같습니다.

 

% [매개 변수] [플래그] [너비] [.정밀도] [길이] 형식 지정자 유형

 

형식지정자는 위 처럼 옵션을 주어 지정할 수 있습니다.

예를 들어 %3d 라고 할 경우 3자리 10진수로 출력한다는 뜻입니다. 

printf("%3d", 10);이라고 입력하면 그 결과는

[공백1칸]10 으로 출력됩니다.

특수문자

그리고 printf에 사용하는 문자형들이 있습니다.

 표에서 작성된 내용중 가장 많이 사용하는 부분은 '\n' 입니다. Carriage Return(캐리지 리턴)이라고 부르기도 하고, 한국어로 "개행 문자"라고도 합니다. 즉, 새로운 줄로 바꿔주고 그 시작점을 가장 왼쪽으로 한다는 뜻입니다.

나머지 부분은 실습을 하면서 사용해봅시다.

 

 


 

 

위와 같이 빈프로젝트와 소스 코드에서 printf.c 파일을 생성해줍시다.

 

#include <stdio.h>

int main(void)
{
	printf("학생 성적 출력하기\n");
	printf("==================\n");

	printf("이  름\t국 어\t영 어\t수 학\n");
	printf("%3s\t%3d\t%3d\t%3d\n", "김철수", 90, 80, 77);	// 철수는 이름 출력후 \t이용하여 탭으로 이동
	printf("%3s    %3d\t%3d\t%3d\n", "김영희", 80, 70, 100); // 영희는 이름 출력 후 스페이스바로 4칸
	printf("%3s\t%3d\t%3d\t%3d\n", "홍길동", 89, 78, 88);	// 철수는 이름 출력후 \t이용하여 탭으로 이동
	printf("반 영어 점수 평균 = %3.2f\n", 86.333333);	// 평균 점수 83.3333333 중에서 정수 부분은 3자리까지
								                      // 소수점은 2자리만 출력
	return 0;
}

위와 같이 입력 후 컴파일 해줍시다.

Ctrl + F5

이런 결과를 보실 수 있습니다.

\t을 반영한 내용은 보시면 줄이 딱 맞게 들어가는 걸 보실 수 있을 겁니다.

양식에 맞춰서 출력되는 걸 하고 싶으시면 \t를 잘 활용하시면 출력이 예쁜 모양으로 나오게 정리 가능합니다.

 

댓글