7.1 Standard Input and Output
- 표준 입출력에 관한 함수는 header file인 <stdio.h>에 들어가 있음
- getchar, putchar, printf 등을 이용하여, 표준 입력/출력을 구현
ex) command line 명령어를 이용한 입/출력
prog >infile // input : infile, 실행프로그램 : prog
otherprog | prog // input : otherprog의 결과, 실행프로그램 : prog
7.2 Formatted Output - Printf
- Printf는 표준 출력을 지원함
- int printf(char *format, arg1, arg2, ...)
ex)
char p[] = "good"
printf("%-15.10s", p);
// 출력결과 : 'hello, wor '
// '-' 는 왼쪽으로 붙여쓴다는 의미, '.' 앞은 공간 자릿수, '.' 뒤는 표현자릿수,'s'는 conversion character, %는 conversion specification의 시작을 알림
7.3 Variable-length Argument Lists
- 함수의 argument에서, argument의 갯수가 가변적으로 변할 수 있도록 선언할 수 있음
- printf함수의 경우, argument의 갯수는 그때그때 마다 다름
ex)
int printf(char *fmt, ...);
//argument list가 가변적인 함수의 선언
// ... 부분의 이름이 정해지지 않은 argument들은 va_list라는 pointer가 가리키고 있음
7.4 Formatted Input - Scanf
- Scanf는 표준 입력을 지원함
- int scanf(char *format, arg1, arg2, ...)
- argument는 반드시 pointer가 들어가야 함
- 각 입력에 대한 구분은 white space를 통해서 이루어짐
ex)
int day, year;
char monthname[20];
scanf("%d %s %d", &day, monthname, &year);
7.5 File Access
- 외부 file에 있는 것들을 표준 입력으로 사용하거나, 표준 출력을 이용해 수정하고 싶을 때는 파일을 열어야함
- 마지막에는 열었던 파일을 반드시 닫도록 함
ex)
FILE *fp //FILE은 typedef로 정의된 int와 같이 자료형임
fp = fopen(file_name, mode)
// 외부 파일을 각종 모드로 열기
// mode는 r(읽기), w(쓰기), a(덧붙이기)중 하나가 될 수 있고, 바이너리 파일일 경우, 'rb'와 같이 씀
int getc(FILE *fp) // 연 파일을 표준입력으로 받음
int putc(int c, FILE *fp) //연 파일에 표준출력으로 값 c를 보냄
#define getchar() getc(stdin) // getchar()은 getc에서 file을 stdin(보통은, keyboard)로 설정한것과 동일
#define putchar(c) putc((c), stdout) // putchar()은 putc에서 file을 stdout(보통은, screen)으로 설정한 것과 동일
int fclose(FILE *fp)
//fp가 다른 것을 가리킬 수 있도록 열었던 파일을 닫음
//buffer flush가 일어남
7.6 Error Handling - Stderr and Exit
- stderr은 stdin, stdout과 같은 file pointer이며, 표준에러출력(보통은, 모니터)
- exit()은 프로그램에서 에러등이 발생했을 경우 사용하며, 즉시 프로그램을 종료시킴
- exit()은 main함수에서 return문을 사용하는 것과 동일함.
- 에러의 판별은, ferror, feof와 같은 함수를 이용하여 판별가능
ex)
exit(1) //main문에서 return 1을 한것과 동일, 즉 비정상적인 상태임을 알리고 프로그램 강제종료
int ferror(FILE *fp) //fp에 에러가 있을 경우 0이아닌값 출력
int feof(FILE *fp) //fp가 eof가 발생할 경우 0이아닌값 출력
7.7 Line Input and Output
- fgets, fputs함수를 이용하여 파일에 문자열등을 꺼내는/집어넣는 line 입/출력을 구현할 수 있음
ex) char *fgets(char *line, int maxline, File *fp); //fp에서 maxline-1길이의 문자열까지 한번에 읽어들임
char *fputs(char *line, FILE *fp); //fp에 문자열을 씀
7.8 Miscellaneous Functions
- Appendix참조
'프로그래밍 > C language' 카테고리의 다른 글
8. The UNIX System Interface (0) | 2021.09.03 |
---|---|
6. Structures (0) | 2021.08.14 |
5. Pointer and Arrays (0) | 2021.08.11 |
4. Function and Program Structure (0) | 2021.03.29 |
3. Control Flow (0) | 2021.03.29 |