C 언어의 <stdio.h> 라이브러리는 표준 입출력 기능을 제공하는 함수들을 포함하고 있습니다. 이 라이브러리를 사용하면 콘솔과 파일 간의 데이터 입출력을 손쉽게 처리할 수 있습니다.
다른 입출력 라이브러리보기
1. printf() 함수의 정의
printf() 함수는 표준 출력 스트림인 콘솔에 텍스트와 데이터를 출력하는 함수입니다.
이 함수는 <stdio.h> 헤더 파일에 포함되어 있으며, 프로그램에서 텍스트를 출력할 필요가 있을 때 주로 사용됩니다.
형식
int printf(const char *format, ...);
format: 출력할 문자열의 형식을 지정하는 문자열입니다. 이 문자열은 일반 텍스트와 형식 지정자를 포함할 수 있습니다.
...: 가변 인자 목록으로, 포맷 문자열에 따라 출력할 값들이 위치할 수 있습니다.
2. 주요 기능
형식화된 출력: 문자열, 정수, 실수와 같은 다양한 데이터 타입을 형식화하여 출력할 수 있습니다.
가변 인자: 매개변수로 전달되는 인자의 수에 제한이 없으며, 다양한 형식 지정자를 사용하여 출력을 조정할 수 있습니다.
printf("Hello, %s!\n", "World"); // "Hello, World!" 출력
3. 형식 지정자
printf() 함수에서 사용되는 형식 지정자는 출력할 데이터의 타입을 나타내며, 포맷 문자열 내에서 % 기호로 시작합니다.
%d | 10진 정수 (int) | %e %E |
지수 형식 (float, ) |
%i | 10진 정수 (int) | %g %G |
자동 선택 (float) |
%u | 부호 없는 10진 정수 (unsigned int) | %c | 문자 한 개(char) |
%o | 8진 정수 (unsigned int) | %s | 문자열 (char 배열) |
%x %X |
16진 정수 (unsigned int, 소문자) 16진 정수 (unsigned int, 대문자) |
%p | 포인터 주소 |
%f %F |
실수형 데이터 출력, 부동 소수점 수 (float) 기본적으로 소수점 이하 6자리 |
%% | 퍼센트 기호 (%) |
4. 사용 예제
4.1 기본 사용
#include <stdio.h>
int main() {
printf("Hello, World!\n"); // "Hello, World!" 출력
return 0;
}
4.2 다양한 데이터 타입 출력
#include <stdio.h>
int main() {
int num = 42;
float pi = 3.14159;
char letter = 'A';
char name[] = "Alice";
printf("정수: %d\n", num); // 정수 출력
printf("실수: %.2f\n", pi); // %.2f는 소수점 이하 2자리까지 출력하는 형식지정자
printf("문자: %c\n", letter); // 문자 출력
printf("문자열: %s\n", name); // 문자열 출력
return 0;
}
4.3 여러 인자 사용
#include <stdio.h>
int main() {
int a = 5, b = 10;
printf("a: %d, b: %d, 합: %d\n", a, b, a + b); // a와 b의 값과 합 출력
return 0;
}
5. 포맷 지정자와 정렬
printf() 함수는 포맷 지정자를 사용하여 출력의 너비와 정렬을 조정할 수 있습니다. 이를 통해 출력의 가독성을 높일 수 있습니다.
5.1 출력 너비 지정
출력 너비를 지정하려면 % 뒤에 숫자를 추가합니다:
#include <stdio.h>
int main() {
printf("%5d\n", 42); // 42를 5자리로 오른쪽 정렬하여 출력
printf("%-5d\n", 42); // 42를 5자리로 왼쪽 정렬하여 출력
return 0;
}
위 예제에서 %-5d는 정수를 왼쪽 정렬하여 출력하고, %5d는 오른쪽 정렬하여 출력합니다.
5.2 소수점 자리수 지정
실수의 소수점 이하 자리수를 지정할 수도 있습니다:
#include <stdio.h>
int main() {
float pi = 3.141592653589793;
printf("%.2f\n", pi); // 3.14 출력
printf("%.5f\n", pi); // 3.14159 출력
return 0;
}
6. 특수문자 출력
printf()는 여러 특수 문자를 출력할 수 있는 기능도 제공합니다.
\n: 줄 바꿈
\t: 탭
\\: 백슬래시
\": 큰따옴표
#include <stdio.h>
int main() {
printf("Hello,\nWorld!\n"); // 줄 바꿈
printf("Tab\tSpace\n"); // 탭
printf("Quote: \"Hello!\"\n"); // 큰따옴표
return 0;
}
7. 반환 값
printf() 함수는 출력된 문자의 개수를 반환합니다.
만약 오류가 발생할 경우 음수를 반환합니다. 이를 통해 출력 성공 여부를 확인할 수 있습니다.
#include <stdio.h>
int main() {
int count = printf("Hello, World!\n");
if (count < 0) {
printf("출력 오류 발생\n");
} else {
printf("출력된 문자 수: %d\n", count);
}
return 0;
}
#include <stdio.h>
int main() {
int count = printf("H\n");
if (count < 5) {
printf("출력 오류 발생\n");
} else {
printf("출력된 문자 수: %d\n", count);
}
return 0;
}
8. 주의사항
버퍼링: printf()는 내부적으로 출력 버퍼를 사용하므로, 출력이 즉시 이루어지지 않을 수 있습니다. 프로그램이 종료될 때 버퍼의 내용이 자동으로 출력되지만, fflush(stdout);를 사용하여 버퍼를 강제로 비울 수 있습니다.
형식 지정자와 인자의 불일치: 형식 지정자와 인자의 타입이 일치하지 않으면 예기치 않은 결과가 발생할 수 있습니다. 예를 들어, %d에 실수를 전달하면 잘못된 값을 출력할 수 있습니다.
메모리 관리: printf()는 메모리를 동적으로 할당하지 않지만, 출력할 문자열이 너무 길면 스택 오버플로우를 발생시킬 수 있습니다. 적절한 크기의 버퍼를 사용해야 합니다.
'c언어 > C언어 개념정리' 카테고리의 다른 글
C언어의 표준 입출력 라이브러리 <studio.h> 4. fclose() (0) | 2024.12.03 |
---|---|
C언어의 표준 입출력 라이브러리 <studio.h> 3. fopen() (0) | 2024.12.03 |
C언어의 표준 입출력 라이브러리 <studio.h> 2. scanf() (4) | 2024.12.02 |
C 언어에서 프로시저란? (0) | 2024.12.02 |
C언어에서의 라이브러리란? (0) | 2024.12.02 |