본문 바로가기

C,C++

C] 표준 입출력 방법 정리(scanf,printf,fgets,getchar,fgetc 등)

<stdio.h> 헤더파일

1. scanf(), printf()

보다 쉬운 설명을 위해 scanf()는 printf() 이후에 설명하겠다.

int printf(const char* restrict format, ...):

서식화된 출력을 지원.

출력할 데이터를 어떤 서식에 맞춰 출력할지 format specifier을 통해 직접 지정 가능(서식 지원자는 아래 참고.)

ⓐ %와 타입을 나타내는 영문자 사이에 숫자를 추가하여 필드의 폭을 설정할 수 있다.

ⓑ 숫자 앞에 '-' 기호를 붙이면 왼쪽 정렬로 변경할 수 있다.(오른쪽 정렬이 기본)

ⓒ 숫자 앞에 '+' 기호를 붙이면 수의 부호에 맞추어 출력할 수 있다.

printf("ⓐ 예시: '%3d'\n", 1);
printf("ⓑ 예시: '%-3d'\n", 1);
printf("ⓒ 예시: '%+3d'\n", 1);

 output

더보기

ⓐ 예시: '  1'
ⓑ 예시: '1  '
ⓒ 예시: ' +1'

 

int scanf(const char* restrict format, ...):

주소 연산자(&)를 통해서 입력 받은 데이터를 뒤에 나오는 변수에 저장한다.

+

[^'문자']를 % 뒤에 넣으면 해당 문자를 만나기 전까지 받아온다는 의미이다.

보통 공백을 포함해서 한 줄을 읽어들일때 사용한다.

	char line[1000001];
	scanf("%[^\n]s", line);

 

※ 아래와 같이 float형 실수를 입력받을 때는 %f 사용하지만,

double형 실수에 입력받을때는 반드시 '%lf' 서식 지정자를 사용한다.

float num1;
double num2;

scanf("%f%lf",&num1,&num2);

 

Format Specifier 출력 데이터 형태
%d, %i 부호 있는 10진수 정수
%ld long 타입 10진수 정수
%lld long long 타입 10진수 정수
%u unsigned type 10진수 정수
%o 부호 없는 8진수 정수
%x / %X 부호 없는 16진수 정수
소문자 사용 / 대문자 사용
%f
/ %.nf
고정 소수점으로 표효한 실수

소수점 이하 6자리까지 표현
/ 소수점 이하 n자리까지 반올림해서 표현
%e / %E 부동 소수점으로 표현한 실수
e-표기법/E-표기법
%g / %.ng 값에 따라 %f나 %e 사용

유효숫자 6개까지 / 유효숫자 n개까지 표현
%G 값에 딸 %f나 %E 사용
%c 하나의 문자(char) ' '
※한글, 한자, 유니코드 X
%s 문자열 " "
%% % 기호 출력

 


2. getchar(), putchar()

int getchar(void): 한 문자씩 읽어들이며 리턴한다.

int putchar(int c): 모니터에 아스키 코드값에 해당하는 문자를 출력한다.


3. fgetc(), fputc()

int fgetc(FILE* stream) : getchar()과 마찬가지로 하나의 문자를 입력받는 함수이지만,

문자를 입력받을 스트림을 인수로 전달하여 직접 지정할 수 있어서

키보드 뿐만 아니라 파일을 통해서도 문자를 입력받을 수 있다.

int fputc(int c, FIFLE* stream) : fgetc()와 마찬가지다. 


4. puts()

int puts(const char* s): c style 문자열에서 '\0'을 만나면 '\n'으로 바꾸어 모니터에 출력한다.


5. fgets(), fputs()

char* fgets(char* restrict s, int n, FILE* restrict stream): 키보드뿐만 아니라 파일에서도 문자열을 입력받을 수 있다.

첫 번째 인수: 입력받는 문자열을 저장하기 위해 선언한 배열의 시작 주소

두 번째 인수: 입력받을 수 있는 문자열의 최대 길이

마지막 인수: 문자열을 입력받을 스트림

int fputs(const char* restrict s, FILE* restric stream): 모니터뿐만 아니라 파일에 문자열을 출력할 수 있다.

※puts() 함수와 달리 문자열을 출력한 다음에 자동으로 줄바꿈 X


참고

코딩의 시작, TCP School

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com