3.4 서식 지정자 사용하기

이번에는 서식 지정자(format specifier)를 사용하여 "Hello, world!"를 출력해보겠습니다. 서식 지정자는 printf로 문자열을 출력할 때 값으로 바뀌는 부분을 뜻합니다.

다음 내용을 소스 코드 편집 창에 입력하세요.

hello_with_format.c

#include <stdio.h>

int main()
{
    printf("%s\n", "Hello, world!");

    return 0;
}

실행 결과

Hello, world!

printf%s를 사용한 뒤 "Hello, world!"를 넣어주면 %s 부분이 "Hello, world!"로 바뀌게 됩니다.

그림 3‑21 서식 지정자 %s로 Hello,world! 출력하기

서식 지정자는 왜 사용할까요? 사실 서식 지정자를 사용하든 "Hello, world!"를 바로 출력하든 결과에는 차이가 없습니다. 하지만 서식 지정자는 변수를 사용하여 같은 내용을 여러 개 출력하거나, 출력 형태를 바꿀 때 유용하게 사용할 수 있습니다.

이제 서식 지정자의 다양한 사용 방법을 알아보겠습니다. 다음과 같이 %s를 두 번 사용했다면 각 %s에 들어갈 문자열을 , (콤마)로 구분하여 차례대로 넣어주면 됩니다.

printf("%s %s\n", "Hello", "1234");

실행 결과

Hello 1234

첫 번째 %s"Hello"가 들어가고 두 번째 %s"1234"가 들어가므로 "Hello 1234"가 출력됩니다.

그럼 Hello, (콤마)까지 출력하려면 어떻게 해야 할까요? 이때는 문자열 안에 콤마를 넣어주면 됩니다.

printf("%s %s\n", "Hello,", "1234");    // "Hello,"처럼 문자열 안에 콤마를 넣어줌

실행 결과

Hello, 1234

다른 방법으로는 "%s, %s"와 같이 서식 지정자 부분에 콤마를 넣는 방법도 있습니다. 이때는 "Hello" 문자열 안에 콤마를 넣으면 안 되겠죠?

printf("%s, %s\n", "Hello", "1234");

실행 결과

Hello, 1234

만약 "Hello"에 콤마를 넣으면 서식 지정자에서 한 번 출력하고 문자열에서 한 번 출력해서 콤마가 두 개 나와버립니다.

printf("%s, %s\n", "Hello,", "1234");

실행 결과

Hello,, 1234

이번에는 서식 지정자를 "%s%s"와 같이 %s를 붙여쓰는 방법입니다. 이때는 다음과 같이 "Hello""1234"가 붙어서 출력됩니다.

printf("%s%s\n", "Hello", "1234");    // %s 두 개가 붙어있음

실행 결과

Hello1234

그럼 "%s%s"로는 "Hello 1234"를 어떻게 출력해야 할까요? 방법은 간단합니다. "Hello "와 같이 출력할 문자열 안에 공백을 넣어주면 됩니다. 물론 " 1234"와 같이 두 번째 문자열에 공백을 넣어도 상관없습니다.

printf("%s%s\n", "Hello ", "1234");    // Hello에 공백을 넣음
printf("%s%s\n", "Hello", " 1234");    // 1234에 공백을 넣음

실행 결과

Hello 1234
Hello 1234

즉, printf는 서식 지정자의 내용과 출력할 문자열을 조합하여 최종 결과를 만들어내므로 다양한 방법으로 응용할 수 있습니다. 특히 공백도 문자열의 한 부분이므로 출력 결과에 영향을 미친다는 점 기억하세요.

참고
  • %s: 문자열(string)의 약어로 s를 사용합니다.
참고 | 한 프로젝트에서 main 함수가 여러 개라면?

만약 Visual Studio에서 main 함수가 들어있는 .c 파일을 계속 추가해서 main 함수가 여러 개가 되었다면 컴파일 할 때 에러가 발생하게 됩니다. 프로젝트에서 main 함수는 반드시 하나만 있어야 합니다.

참고 | 함수 사용 방법, 함수 원형, 반환값 설명

이 책에서는 새로운 함수가 나올 때마다 다음과 같이 함수 사용 방법, 함수 원형, 반환값 설명을 보여줍니다. 여기서 함수 사용 방법 정도만 알아두면 되며 함수 원형 자체와 반환값 설명은 외우지 않아도 됩니다. 나중에 필요할 때 찾아보세요.

  • printf(서식, 값1, 값2, …);
    • int printf(char const* const _Format, ...);
    • 성공하면 출력한 문자열의 길이를 반환, 실패하면 음수를 반환