제 10 장 입출력 함수
목 차
표준 입출력 함수
표준 파일 입출력 함수
문자 관련 제어 표준 함수
블록 입출력 함수
순차 접근과 임의 접근 파일
표준 입출력 함수 (1)
콘솔 모드에서의 자료 입출력 함수
<stdio.h> 에 정의 되어 있음
표준 문자 입출력 함수
scanf()
printf()
getchar()
1 개의 문자를 콘솔로부터 입력 받음
putchar()
1 개의 문자를 콘솔로 출력
표준 입출력 함수 (2)
표준 문자열 입출력 함수
다수의 문자를 배열의 형태로 입출력
gets()
scanf() 와 비슷 -> 문자사이의 공백을 구분자로 인식
문자사이의 공백을 무시
엔터키 값이 종료를 의미
개행문자 (\n) 를 NULL 문자 (\0) 로 변환
128 바이트의 크기
입력될 문자열의 최대 길이는 127 바이트
NULL 종료 문자를 저장하기 위한 1 바이트가 추가
puts()
오류 시 EOF 반환
NULL 문자를 개행문자 (\n) 로 변환
표준 파일 입출력 함수 (1)
텍스트 파일과 이진 파일
텍스트 파일
ASCII 코드값으로 저장됨
일반적인 에디터로 정상적으로 열림
txt 파일 , 소스 파일 등
이진 파일
Binary 파일 , 기계어 파일
전용 Viewer 가 필요
실행 파일 , 멀티미디어 파일 등
표준 파일 입출력 함수 (2)
파일 포인터 함수
파일을 열거나 닫을 때 사용
파일은 일종의 자료의 배열이므로 포인터 이용
<stdio.h> 포함해야 함
사용 순서
“FILE*" 형태의 변수를 선언을 이용
FILE *fp;
파일 열기 (fopen)
fp = fopen(“ 파일명” , “ 모드” );
파일 닫기 (fclose)
fclose(fp);
표준 파일 입출력 함수 (3)
파일 열기 모드
텍스트 모드 열기 ( 읽기 모드 ) 이진 모드 열기 ( 읽기 모드 )
fp=fopen("text.txt", "r"); fp=fopen("text.txt", "rb");
텍스트 모드 열기 ( 쓰기 모드 ) 이진 모드 열기 ( 쓰기 모드 )
fp=fopen("text.txt", "w"); fp=fopen("text.txt", “wb");
"r"
"w"
"a"
"r+"
"w+"
"a+"
읽기
쓰기 ( 새로 생성 ) 끝에 추가 쓰기 읽고 쓰기
읽고 쓰기 ( 새로 생성 ) 추가를 위해 읽고 쓰기
"rb"
"wb"
"ab"
"rb+"
"wb+"
"ab+"
읽기
쓰기 ( 새로 생성 ) 끝에 추가 쓰기 읽고 쓰기
읽고 쓰기 ( 새로 생성 ) 추가를 위해 읽고 쓰기
문자 관련 제어 함수 (1)
문자 제어 표준 함수
int fgetc()
int fgetc(FILE *fp);
파일 fp 로부터 한 문자를 입력 받음
return value : 입력문자 , 오류 시 EOF 반환
char c; FILE *fp = fopen("text.txt", "r"); c = fgetc(f p);
int fputc(int c, FILE *fp);
파일 fp 에 한 문자를 기록
return value : 출력문자 , 오류 시 EOF 반환
c = 'A'; fputc(c);
문자 관련 제어 함수 (2)
문자 제어 표준 함수 ( 계속 )
int getc()
int getc(FILE *fp);
fgetc() 와 같음
int putc(int c, FILE *fp);
파일 fp 에 한 문자를 기록
fputc() 와 같음
문자 관련 제어 함수 (3)
문자열 제어 표준 함수
fgets()
char *fgets(char *s, int n, FILE *fp);
파일 fp 로부터 최대 n 바이트 문자열 입력 ( 개행 코드까지 )
return value : 문자열 포인터 , 파일 종료 시 NULL 반환
if(fgets(temp,80,out) == NULL)
fputs()
int fputs(char *s, FILE *fp);
파일 fp 에 문자열 s 를 입력
return value : 에러 시 음수 , 성공 시 문자열 길이 출력
문자 관련 제어 함수 (4)
문자열 제어 표준 함수
fprintf()
int fprintf(FILE *fp, ………);
파일 fp 에 printf 와 같은 기능으로 자료를 기록
fscanf()
int fscanf(FILE *fp, ………);
파일 fp 에서 scanf 와 같은 기능으로 자료를 읽음
블록 입출력 함수 (1)
블록 자료 읽기 / 쓰기
파일 커서 이용
블록 입출력 함수 (2)
블록 자료 쓰기
fwrite()
buffer 가리키는 메모리 블록의 size 만큼 블록 기록
size_t fwrite(void *buffer, size_t size, size_t count, FILE *stream)
블록 자료 읽기
fread()
size_t fread(void *buffer, size_t size, size_t count, FILE *stream)
순차 접근과 임의 접근 (1)
순차 접근 파일
각 레코드가 일정한 순서대로 저장
일반적으로 레코드 키를 이용
번지순이나 문자순으로 저장
일괄처리에 주로 사용
size_t rewind(FILE *stream);
임의 접근 파일
파일에 기록된 데이터를 바이트 배열로 취급
임의의 위치에 있는 데이터를 읽거나 쓰기
파일 포인터 (file pointer) 라는 커서 이용
순차 접근과 임의 접근 (2)
임의 접근 파일 ( 계속 )
size_t fseek(FILE *stream, long offset, int origi n)
; fseek 옵션
상수값 매크로 의 미
0 SEEK_SET 파일의 시작 위치
1 SEEK_CUR 현재의 파일 포인터 위치 2 SEEK_END 파일의 끝 위치