본문 바로가기

카테고리 없음

printf

printf는 C 프로그래밍 언어에서 출력 형식을 지정하고 데이터를 콘솔에 출력하는 함수입니다. printf는 표준 라이브러리인 stdio.h에 정의되어 있으며, 다양한 형식의 출력을 지원합니다. 아래에서 printf의 기본 개념과 주요 기능을 상세히 설명하겠습니다.

1. 함수 프로토타입

printf 함수의 프로토타입은 다음과 같습니다:

c
코드 복사
int printf(const char *format, ...);
  • const char *format: 출력할 형식을 지정하는 문자열입니다. 문자열 내에서 데이터의 형식과 위치를 지정할 수 있습니다.
  • ...: 가변 인자 리스트로, 형식 문자열에서 지정한 데이터에 따라 값을 전달합니다.

2. 형식 문자열

형식 문자열은 출력할 텍스트와 형식 지정자를 포함합니다. 형식 지정자는 %로 시작하며, 그 뒤에 데이터 타입을 지정하는 문자가 옵니다. 형식 문자열에 포함된 텍스트는 그대로 출력되며, 형식 지정자는 전달된 인자의 값을 표시합니다.

예제 형식 지정자

  • %d: 정수형 데이터 출력 (부호가 있는 10진수)
  • %u: 부호 없는 정수형 데이터 출력 (부호 없는 10진수)
  • %f: 실수형 데이터 출력 (소수점이 있는 실수)
  • %c: 문자 출력
  • %s: 문자열 출력
  • %x: 16진수 정수 출력 (소문자)
  • %X: 16진수 정수 출력 (대문자)

형식 지정자 예시

c
코드 복사
int age = 30; printf("I am %d years old.\n", age);

위의 예에서 %d는 age 변수의 값을 10진수 정수로 출력하도록 지정합니다.

3. 형식 지정자의 플래그와 수정자

형식 지정자와 함께 사용할 수 있는 다양한 플래그와 수정자가 있습니다.

  • 정렬 플래그: - (왼쪽 정렬), + (부호 표시), 0 (빈 공간을 0으로 채우기)
  • 너비: 출력할 필드의 최소 너비를 지정합니다. 예를 들어, %5d는 최소 5자리로 출력합니다.
  • 정밀도: 소수점 이하 자릿수를 지정하거나 문자열의 최대 길이를 제한합니다. 예를 들어, %.2f는 소수점 이하 2자리까지 출력합니다.

예시

c
코드 복사
float pi = 3.14159; printf("Pi to 3 decimal places: %.3f\n", pi);

위의 예에서는 %.3f가 소수점 이하 3자리까지 출력되도록 합니다.

4. 반환 값

printf는 출력된 문자 수를 반환합니다. 성공적으로 출력된 경우, 출력된 문자 수를 반환하고, 오류가 발생하면 음수를 반환합니다.

5. 예제 코드

다음은 다양한 형식 지정자를 사용하는 printf의 예제입니다:

c
코드 복사
#include <stdio.h> int main() { int num = 42; float pi = 3.14159; char letter = 'A'; char name[] = "Alice"; printf("Integer: %d\n", num); printf("Float: %.2f\n", pi); printf("Character: %c\n", letter); printf("String: %s\n", name); printf("Hexadecimal: %x\n", num); printf("Left aligned: %-10d End\n", num); printf("Zero padded: %010d\n", num); return 0; }

6. 자주 발생하는 오류

  • 형식 지정자 불일치: 형식 지정자와 인자의 타입이 일치하지 않으면 정의되지 않은 동작이 발생할 수 있습니다. 예를 들어, %d로 정수를 출력해야 하는데 실수를 출력하려고 하면 문제가 생길 수 있습니다.
  • 버퍼 문제: printf는 내부적으로 버퍼링을 사용하여 출력을 최적화합니다. 때때로 버퍼링으로 인해 예상보다 늦게 출력될 수 있습니다. fflush(stdout);를 사용하여 버퍼를 강제로 비울 수 있습니다.