스트림 : 모든 입력과 출력을 바이트들의 흐름으로 생각하는 것
* 입출력 함수의 분류
- 형식이 없는 입출력
getchar() 문자 입력 함수
putchar() 문자 출력 함수
gets() 문자열 입력 함수
puts() 문자열 출력 함수
- 형식이 있는 입출력
printf() 형식화된 출력 함수
scanf() 형식화된 입력 함수
* 출력값의 형식 지정자
%d 부호 있는 10진수
%i 부호 있는 10진수
%u 부호 없는 10진수
%o 부호 없는 8진수
%x 부호 없는 16진수, 소문자
%X 부호 없는 16진수, 대문자
%f 소수점 고정 표기 형식
%e 지수 표기 형식, 지수 부분을 e로
%E 지수 표기 형식, 지수 부분을 E로
%g %e 형식과 %f 형식 중 더 짧은 형식으로 출력
%G %E 형식과 %f 형식 중 더 짧은 형식으로 출력
%p 포인터 형식
* 필드폭 지정 형식 지정자
%6d 폭은 6이며 우측정렬
%-6d 폭은 6이며 좌측정렬
%+6d 폭은 6이며 우측정렬, 부호를 함께 ex. +123
* 정밀도 형식 지정자
%6.2f 전체폭은 6, 소수점 이하 자리 2, 우측정렬 ex. 1.23
* 필드폭 지정해서 읽기
scanf("%3d%d:, &a, &b); // 세글자씩 나누어서 읽음
123456을 입력하면 123 / 456 으로 들어감
* 문자열 읽기
%c char형으로 입력받음
%s 공백 문자가 아닌 문자로부터 공백 문자가 나올 때까지 문자열로 변환하여 입력받음
%[abc] 대괄호 안에 있는 문자 a,b,c로만 이루어진 문자열을 읽어들임
%[^abc] 대괄호 안에 있는 문자 a,b,c 만을 제외하고 다른 문자들로 이루어진 문자열을 읽어들임
* 파일
- 파일도 스트림으로 취급되기 때문에 일련의 연속된 바이트라고 취급
* 파일의 유형
- 텍스트 파일 : 문자들이 들어있고, 이들 문자들은 아스키 코드를 이용하여 표현
- 이진 파일 : 사람이 읽을 수 없으나 컴퓨터가 읽을 수 있는 파일 / 특정 프로그램에 의해서만 판독 가능
* 파일 열기
FILE *fp;
fp = fopen("test.txt", "w"); //test.txt라는 파일을 쓰기 모드로 생성
* 파일 모드
r 읽기 모드
w 쓰기 모드
a 추가 모드
r+ 읽기와 쓰기 모드 / 반드시 파일 존재
w+ 읽기와 쓰기 모드 / 파일이 존재하지 않으면 생성
a+ 읽기와 추가 모드
b 이진 파일 모드
* 파일 닫기
FILE *fp;
fp = fopen("test.txt", "w");
fclose(fp);
* 텍스트 파일 읽기와 쓰기
문자 단위 int fgetc(FILE *fp) int fputc(int c, FILE *fp)
문자열 단위 char *fgets(char *buf, int n, FILE *fp) int fputs(const char *buf, FILE *fp)
서식화된 입출력 int fscanf(FILE *fp, ...) int fprintf(FILE *fp, ...)
이진 데이터 fread(char *buffer, int size, int count, FILE *fp) fwrite(char *buffer, int size, int count, FILE *fp);
* 순차 접근
데이터를 파일의 처음부터 순차적으로 읽거나 기록하는 것
한번 읽은 데이터를 다시 읽으려면 현재의 파일을 닫은 후에 파일을 다시 열어야 함
또한 앞부분을 읽지 않고 중간이나 마지막으로 건너뛸 수도 없다
* 임의 접근
파일의 어느 위치에서든지 읽기와 쓰기가 가능
- 파일 위치 표시자 관련 함수
int fseek(FILE *fp, long offset, int origin);
fp는 FILE에 대한 포인터 / offset은 기준 위치로부터 위치 표시자가 이동하는 거리 / origin 기준 위치
fseek(fp, 0L, SEEK)SET); // 파일의 처음으로 이동
+ 텍스트 파일과 이진 파일 입출력의 차이
텍스트 파일을 입출력 하는 경우 변환 발생 : 줄의 끝을 나타내는 \n을 시스템에 맞춰 \r\n으로 변환
이진 파일 입출력의 경우에는 어떠한 변환도 없이 입출력
+ EOF : End Of File
파일의 끝을 나타내는 표시
EOF는 시스템에 따라 달라지지만 보통 int형의 -1이 사용
+ 키보드에서 EOF 입력하기
윈도우 : Ctrl + Z
+ 파일을 오픈한 후 닫지 않으면?
일반적으로 프로그램이 종료되면 파일들은 모두 자동적으로 닫혀짐
하지만 하나의 프로그램에서 열 수 있는 파일의 개수는 보통 제한되어 있으므로
파일을 열기만 하고 닫지 않으면 문제가 될 수 있음
댓글