observe_db

[C언어] 2. 입출력 함수-표준입출력 본문

프로그래밍 언어 기초/C언어

[C언어] 2. 입출력 함수-표준입출력

쩡윤 2023. 2. 27. 17:18

보통 가장 많이 쓰는 건 scanf()/prinf()이다.

이 두 함수는 stdio.h 헤더파일에 포함되어있다.(stdio는 STandard Input/Output. 즉 표준입출력의 축약어.)

 

표준입출력이란 입력은 키보드/출력은 모니터로 되는 것을 말한다.

표준입출력 외에 파일 입출력도 있다.

 

함수 설명
scanf("%*", &a)
printf("%*", a)
보편적으로 많이 쓰는 함수
%*에는 %d(정수), %f(실수), %s(문자열), %c(문자)등이 쓰인다.
gets(*a)
puts(*a)
문자열 단위로 입출력.
문자열 입출력에 자주 쓰인다.1)
getchar()
putchar(int c)
하나의 문자를 입/출력
아래의 getc/putc를 표준입출력으로 고정한 형태.
getch()
putch(int c)
buffer와 echo를 쓰지 않는다.
getche()
putche(int c)
getch에서 echo를 사용하는 버전.
getc(<입출력>)
putc(<입출력>)
모든 표준 입출력의 기본.
하나의 문자를 파일구조체쪽으로 입출력한다.
fgetc/fputc와도 거의 동일(구현 방법만 차이)2)

 

 

buffer와 echo

buffer는 잠시 입력을 모아두는 것이다. 엔터(\n)가 입력되어야 프로그램으로 입력을 넘긴다.

echo는 입력을 표시하는 것이다. 가장 좋은 예시가 비밀번호가 *로 입력되는 방식이 에코를 없애고 대체한 방식이다.

 

 

별첨: #define _CRT_SECURE_NO_WARNINGS

VS를 이용하여 컴파일 하다보면 scanf에 에러가 있을 때가 있다. scanf 함수 자체가 구조적으로 불안정하여 여러 에러를 낳기 때문에 그것을 경고하고 scanf_s를 사용하라고 권하는 것이다.

하지만 위의 매크로를 코드 맨 위에 넣어 설정하면 에러를 뜨지 않게 할 수 있다.

TMI: 헤더 아래에 넣으면 안되냐고 하는데 안된다. 헤더를 설정하기 전에 얘한테서 오는 오류 막으세요전달해야 헤더를 받으면서 설정할 수 있다.

 

 

 


1) scanf()/printf()의 경우는 공백을 구분자로 가져서 공백이 입력되면 한번에 넣을 수가 없다.

그래서 공백도 입력되는 gets/puts가 사용된다

2) getc/putc는 매크로방식, fgetc/fputc는 함수방식. 더 빠르지만, 함수 매개변수로 넘길 수 없다.

Comments