티스토리 뷰

printf의 기본 사용법을 요약한 페이지입니다. https://alvinalexander.com/programming/printf-format-cheat-sheet

일반적인 문장은 다음과 같이 생겼습니다. 여기서 %s와 %d 문자의 의미는 무엇일까요?

printf("the %s jumped over the %s, %d times", "cow", "moon", 2);

숫자를 출력하는 넓이 조정하기

%3d라는 표시는 정수에 대해 세칸의 넓이로 출력하라는 의미입니다. 기본적으로는 오른쪽 정렬을 디폴트로 합니다. 세 칸을 넘어가는 숫자가 오면 오른쪽으로 더 나가게 됩니다. 전체 넓이를 정해진 크기에 맞추고 앞에 남는 크기만큼 빈칸을 채웁니다.

  printf("%3d", 0);   . . 0 세 칸에 맞춰 오른쪽 정렬, 앞은 빈칸
  printf("%3d", 123456789);   123456789 값이 세칸보다 크면 그대로 출력
  printf("%3d", -10);   -10 음수인 경우 부호를 넣고 세칸으로 출력
  printf("%3d", -123456789);   -123456789 위와 동일

정수를 왼쪽 정렬로 출력하기

왼쪽 정렬로 출력하기 위해서는 %-로 뒤에 - 표시를 넣습니다. 뒤에 빈칸으로 넓이만큼을 채웁니다. 숫자가 지정한 자리수보다 길면 오른쪽으로 넘어가게 그대로 출력됩니다.

  printf("%-3d", 0);   0 . . 좌측 정렬하는데 세 칸을 맞춤 (뒤에 빈칸)
  printf("%-3d", 123456789);   123456789 좌측 정렬하는데 더 길면 그냥 출력함
  printf("%-3d", -10);   -10 위와 동일
  printf("%-3d", -123456789);   -123456789 위와 동일

0으로 빈 칸을 채우는 출력 방법

정수를 출력하면서 빈칸을 0으로 채우는 방법은 %0처럼 % 뒤에 0을 넣습니다. 넓이를 채우기 위해 빈칸 대신 0으로 채웁니다.

  printf("%03d", 0);   000 세자리로 출력하되 앞을 0으로 채움
  printf("%03d", 1);   001 1대신 001을 출력
  printf("%03d", 123456789);   123456789 넓이보다 자리수가 크면 그대로 출력
  printf("%03d", -10);   -10 위와 동일
  printf("%03d", -123456789);   -123456789 위와 동일

정수를 포매팅하는 방법

위에서 살펴본 정수 포매팅 방법을 정리하기 위해 몇 가지 예제를 살펴봅니다. 넓이와 정렬과 채우기 등 몇 가지 옵션을 같이 사용했을 때 어떤 결과가 나오는지 보여줍니다. 포매팅 지정자에서 + 표시는 양수에 대해 부호를 붙이라는 의미입니다. (음수는 당연히 - 표시를 해줍니다. 전체 넓이는 부호 표시까지 포함해서 빈칸을 채웁니다) 

 넓이를 최소 5칸으로 출력(우측정렬)   printf("'%5d'", 10);   . . . 10
 넓이를 최소 5칸으로 출력(좌측정렬)   printf("'%-5d'", 10);   10 . . .
 넓이를 최소 5칸으로 0으로 채워서 출력   printf("'%05d'", 10);   00010
 넓이를 최소 5칸으로 + 부호를 붙인다   printf("'%+5d'", 10);    . . +10
 넓이를 최소 5칸으로 좌측정렬, 부호   printf("'%-+5d'", 10);   +10 . .

마지막 예처럼 부호도 붙이고 우측 정렬 하려면 %-+5d처럼 써주면 됩니다.

%+05d 는 5자리를 채우되 우측 정렬하면서 + 부호를 붙이고 앞의 빈칸은 0으로 채우라는 뜻입니다.

소수점수 출력하기

소수점 수를 출력하는 몇가지 예를 보여줍니다. 소수점 수에서는 넓이를 두가지로 표시합니다. 전체 넓이와 소수점 이하의 자리수입니다. 예를 들어 10.3은 전체는 최소 10칸이고 소수점 이하는 3자리임을 나타냅니다. 즉 소수점 위는 최소 6자리가 되겠지요? 

  소수점 이하는 한 자리만   printf("'%.1f'", 10.3456);   10.3
  소수점 이하는 두 자리로   printf("'%.2f'", 10.3456);   10.35
  전체 8칸이고 소수점 이하 두 자리로   printf("'%8.2f'", 10.3456);   . . .10.35
  전체 8칸이고 소수점 이하 네 자리로   printf("'%8.4f'", 10.3456);   .10.3456
  전체 8칸이고 소수점 이하 두 자리로 하
  고 앞은 0으로 채운다
  printf("'%08.2f'", 10.3456);   00010.35
  전체 8칸이고 소수점 이하 두 자리로 하
  고 좌측 정렬한다 (뒤에 . . . 빈칸표시)
  printf("'%-8.2f'", 10.3456);   10.35 . . .
  넓이보다 더 긴 숫자인 경우 그냥 빈칸없
  이 출력한다
  printf("'%-8.2f'", 101234567.3456); 101234567.35

문자열 출력하기

문자열도 전체 넓이를 표시할 수 있고 좌측 또는 우측 정렬을 지정할 수 있습니다.

  단순히 문자열만 출력   printf("'%s'", "Hello");   Hello
  문자열을 최소 길이와 함께 출력   printf("'%10s'", "Hello");   . . . . .Hello
  문자열을 최소 길이와 함께 좌측 정렬로 출력   printf("'%-10s'", "Hello");   Hello . . . . .

특수 문자 출력하기 

다음은 특수한 의미를 가지는 문자를 출력하는 방법입니다. 숫자나 문자가 아닌 것들을 화면에 출력하는 방법입니다.

  \a   알림 소리(삐)
  \b   뒤로 한칸 이동
  \n   줄바꿈
  \r   캐리지리턴
  \t   탭 (문서 작성에서 탭과 같은 역할, 일정 위치까지 건너뜀)
  \\   백슬래시 (그냥 백슬래시는 특수문자 의미므로 두번써야됨)

줄바꿈은 다음줄로 넘어가라는 뜻이고 캐리지리턴은 줄의 제일 앞으로 옮기라(타자기에서 쓰던 개념)는 의미입니다. 보통은 \n만으로 줄바꿈을 표시합니다. 윈도우 환경에서 생성된 파일에는 \r\n이 사용됩니다.

  단어 가운데 탭을 넣음   printf("Hello\tworld");   Hello world
  단어 가운데 줄바꿈을 넣음   printf("Hello\nworld");   Hello
  world
  출력 뒤에 줄바꿈을 넣음   printf("Hello world\n");   Hello world

  백슬래시를 출력하기 위해 \\ 사용   printf("C:\\Windows\\System32\\");   C:\Windows\System32\

printf 포매팅 방법은 많은 언어에서 동일한 방식으로 사용됩니다. 예를 들면 C, C++, Java, Perl, PHP, Ruby, Scala등이 다 비슷한 개념으로 출력 또는 문자열을 포매팅하게 됩니다. 잘 알아두면 매우 유용한 기법입니다.

https://alvinalexander.com/programming/printf-format-cheat-sheet

 

A `printf` format reference page (cheat sheet) | alvinalexander.com

Summary: This page is a printf formatting cheat sheet. I originally created this cheat sheet for my own purposes, and then thought I would share it here. A great thing about the printf formatting syntax is that the format specifiers you can use are very si

alvinalexander.com

 

'C 프로그래밍기초' 카테고리의 다른 글

진짜 이차원배열처럼 malloc하는 방법  (0) 2020.03.14
C 포인터 (1) - 개요  (0) 2020.02.11
구조체란 무엇인가?  (0) 2020.02.11
C from Python - step 1  (0) 2019.12.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함