C/Basic

[C] 표준 입출력

HYEOKJUN 2022. 4. 15. 18:00
반응형


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에서 변수 입력 시 반드시 앞에 붙여줘야 합니다.

데이터를 한 번에 여러 개 입력받을 때 받는 데이터의 구분은 띄어쓰기나 줄 바꿈을 기준으로 구분합니다.

사용자가 정수 변수에 문자를 입력하는 등의 실수를 범하면 예상치 못한 결과가 출력될 수 있습니다.

 

 

반응형