stdio.h (Standard Input Output library)
stdio.h는 C언어의 표준 라이브러리 함수의 매크로 정의, 상수, 여러 자료형의 입출력 함수가 포함된 헤더 파일입니다.
대표적인 함수로 printf, scanf 함수가 있으며 이 기능을 사용하기 위해서는 다음과 같이 소스코드에 해당 헤더 파일을 포함해야 합니다.
#include <stdio.h>
// stdio.h 헤더파일을 포함합니다.
stdio.h와 같은 헤더 파일을 포함하기 위해서는 위와 같이 #include를 통해 헤더파일을 포함시킵니다.
printf()
printf 함수는 표준 출력장치인 모니터에 데이터를 출력하는 함수입니다.
printf 함수의 기본 형식은 다음과 같습니다.
printf("서식 문자열", 변수나 식...);
printf("int %d, float %f, char %c, string %s\n", 123, 1.23, '1', "123");
위에서 서식 문자열(Format String)은 문자열과 서식 지정자, 특수문자로 구성됩니다.
서식 지정자 (Format Specifier)
서식지정자(Format Specifier)는 변수나 식에 표현된 데이터를 순서에 맞게 출력 형태를 지정하여 출력하는 기호입니다.
기호 | 의미 | 자료형 |
%o | 8진수 출력 | unsigned int |
%u | 부호없는 10진수 출력 | unsigned int |
%d | 10진수 출력 | int |
%ld | 10진수 출력 | long |
%lld | 10진수 출력 | long long |
%x | 16진수 소문자로 출력 | unsigned int |
%X | 16진수 대문자로 출력 | unsigned int |
%f | 실수 출력 | float |
%lf | 실수 출력 | double |
%e | 지수 소문자로 출력 | float, double |
%E | 지수 대문자로 출력 | float, double |
%g | %f나 %e중 더 짧은 값 출력 | float, double |
%G | %f나 %E중 더 짧은 값 출력 | float, double |
%c | 문자 출력 | char |
%s | 문자열 출력 | char[], char* |
%p | 메모리 주소 출력 | |
%n | %n 전까지의 문자 수 저장 | int |
서식 지정자에는 서식 형태를 지정해 줄 수 있습니다.
%(플래그)(폭)(.정밀도)(길이)(서식 기호)
/* 정수 */
printf("%d", 012);
// 0이 아닌 정수 변수나 식이 0으로 시작시 8진수로 인식합니다.
// 10
printf("%d", 0x12);
// 정수 변수나 식이 0x나 0X로 시작시 16진수로 인식합니다.
printf("%#x", 123);
// %#o의 경우 0을, %#x의 경우 0x를, %#X의 경우 0X를 앞에 붙입니다.
// 0x7b
printf("%6d", 123);
// 폭을 6칸으로 지정하고 오른쪽 정렬합니다.
// 123
printf("%-6d", 123);
// 폭을 6칸으로 지정하고 왼쪽 정렬합니다.
// 123
printf("%06d", 123);
// 폭을 6칸으로 지정하고 빈 공간은 0으로 채웁니다.
// 000123
printf("%+d", 123);
// 양수일때 +기호를 표시합니다.
// +123
/* 실수 */
printf("%.2f", 1.23456);
// 소수 2번째 자리까지 출력합니다.
// 1.23
printf("%6.2f", 1.23456);
// 폭을 6칸으로 지정하고 소수 2번째 자리까지 출력합니다.
// 1.23
printf("%06.2f", 1.23456);
// 폭을 6칸으로 지정하고 빈 공간은 0으로 채우며 소수 2번째 자리까지 출력합니다.
// 001.23
/* 문자 & 문자열 */
printf("%6c", 'c');
// 폭을 6칸으로 지정하고 오른쪽 정렬합니다.
// c
printf("%20s", "Hello world!");
// 폭을 20칸으로 지정하고 오른쪽 정렬합니다.
// Hello world!
특수문자 (Escape Sequence)
특수문자(Escape Sequence)는 표현 방법이 딱히 없는 기능이나 프로그래밍에서 다른 의미를 가지고 있어 쓰지 못했던 문자를 표현하는 약속된 기호입니다.
기호 | 의미 | |
\a | 알림 소리를 냅니다. | |
\b | 한 문자를 지웁니다. | |
\n | 다음 줄로 이동합니다. | |
\r | 현재 줄의 처음으로 이동합니다. | |
\t | 수평 탭만큼 이동합니다. | |
\v | 수직 탭만큼 이동합니다. | |
\\ | \ 문자를 출력합니다. | |
\' | ' 문자를 출력합니다. | |
\" | " 문자를 출력합니다. | |
\? | ? 문자를 출력합니다. | |
%% | % 문자를 출력합니다. |
* 원화 기호(\) = 백슬래시(\)
scanf()
scanf 함수는 표준 입력장치인 키보드를 통해 데이터를 읽어 들이는 함수입니다.
scanf 함수의 기본 형식은 다음과 같습니다.
scanf("서식 문자열", 변수...);
int number1;
float number2;
scanf("%d %f", &number1, &number2);
위에서 서식 문자열은 서식 지정자를 이용하여 순서에 맞게 다양한 데이터를 입력받을 수 있습니다.
변수 앞에 & 문자는 주소 연산자로 scanf에서 변수 입력 시 반드시 앞에 붙여줘야 합니다.
데이터를 한 번에 여러 개 입력받을 때 받는 데이터의 구분은 띄어쓰기나 줄 바꿈을 기준으로 구분합니다.
사용자가 정수 변수에 문자를 입력하는 등의 실수를 범하면 예상치 못한 결과가 출력될 수 있습니다.