일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파싱
- 클래스
- 자연어처리
- 컴파일러
- 객체지향설계
- 랩실일기
- NLP
- 애자일
- css
- OS
- 운영체제
- 데이터베이스
- 벡터
- 웹소프트웨어
- Linear Algebra
- 스케줄러
- 프로세스
- C언어
- 컴파일
- 데이터분석
- 정보검색
- 가상메모리
- 파싱테이블
- 언어모델
- 836
- React
- 소프트웨어공학
- DB
- Agile
- 오픈소스웹소프트웨어
Archives
- Today
- Total
observe_db
[C언어] 2. 입출력 함수-표준입출력 본문
보통 가장 많이 쓰는 건 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는 함수방식. 더 빠르지만, 함수 매개변수로 넘길 수 없다.
'프로그래밍 언어 기초 > C언어' 카테고리의 다른 글
[C언어] 1.(외전) 안이 외않되 (0) | 2023.02.09 |
---|---|
[C언어] 1. C언어 기본 개념들 (0) | 2023.02.08 |
[C언어] 0. 대략적인 차례 (0) | 2023.02.08 |
Comments