Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 문자열 출력: puts() vs printf() 완벽 비교

개요

C 언어에서 puts()printf()는 모두 stdio.h 헤더 파일에 선언되어 있으며, 텍스트를 출력 스트림(output stream)으로 보내는 데 사용됩니다. 두 함수는 비슷한 목적을 가지고 있지만, 사용 방법과 문법, 내부 동작 방식에서 뚜렷한 차이가 있습니다.

puts() 함수란?

puts()는 문자열을 출력 스트림에 출력한 후, 자동으로 개행 문자 '\n'을 추가하는 함수입니다. 따라서 출력이 끝나면 커서가 자동으로 다음 줄로 이동합니다. 형식 지정자(format specifier)를 파싱하지 않기 때문에 printf()보다 구현이 간단하고 실행 속도도 빠른 편입니다.

C 언어에서 puts()의 기본 문법은 다음과 같습니다.

puts("string");

만약 출력 후 커서를 다음 줄로 이동시키고 싶지 않다면, 개행 문자를 추가하지 않는 fputs()를 사용하면 됩니다.

fputs(string, stdout);

puts() 예제

#include<stdio.h>
int main() {
    puts("This is a demo.");
    fputs("No new Line.", stdout);
    puts(" Welcome!");
    getchar();
    return 0;
}

실행 결과

This is a demo.
No new Line. Welcome!

위 예제에서 fputs()로 출력된 "No new Line." 뒤에는 개행이 없기 때문에, 이어지는 puts()의 출력인 " Welcome!"이 같은 줄에 함께 표시되는 것을 확인할 수 있습니다.

printf() 함수란?

printf()는 단순 텍스트뿐만 아니라 변수의 값까지 형식에 맞춰 출력할 수 있는 강력한 함수입니다. %d, %f, %s 같은 형식 지정자를 활용하면 다양한 자료형의 값을 문자열과 조합해 출력할 수 있습니다. 다만 형식 지정자를 분석하고 처리해야 하므로 구현이 복잡하고, 그만큼 puts()보다 실행 비용(오버헤드)이 큽니다.

C 언어에서 printf()의 기본 문법은 다음과 같습니다.

printf("string");

printf() 예제

#include<stdio.h>
int main() {
    int a = 10;
    printf("Hello world! \n");
    printf("The value of a : %d", a);
    getchar();
    return 0;
}

실행 결과

Hello world!
The value of a : 10

정리: 어떤 함수를 사용해야 할까?

고정된 문자열만 출력한다면 개행 처리가 자동이고 속도가 빠른 puts()가 유리합니다. 반면, 변수 값 출력이나 형식화된 출력이 필요하다면 printf()를 사용해야 합니다. 성능이 중요한 코드에서는 printf()를 불필요하게 남용하지 말고, 상황에 맞는 함수를 선택하는 것이 좋은 코딩 습관입니다.