[[사외교육]]/[SDS]신입사원_역량강화

FILE I/O

갑빠돌격기 2011. 3. 10. 17:05
파일 입출력을 할 때는, 자동으로 스트림이 생성되는 것이 아니라 먼저 스트림을 생성한 다음에 입출력을 수행해야 한다. 이처럼 스트림을 생성하는 함수가 fopen 함수인다. fopen 함수로 파일을 열면 파일의 파일 포인터가 리턴된다. 파일 포인터란 파일에 접근 하는 데 사용되는 FILE구조체 포인터를 말한다. 파일에 접근하려면 항상 파일 포인터가 필요하다.

일단 파일을 연 다음에는 여러 가지 파일 입출력 함수를 이용해서 입출력 작업을 수행할 수 있다.

파일 입출력에 사용되는 함수로는
fgetc, fputc, fgets, fputs, fscanf, fprintf, fread, fwrite 등이 있다.
또한 마지막으로 모든 입출력이 끝났을 때 사용하는 fclose 함수가 있다.

 파일열기 FILE * fp = NULL;
fp = fopen(...);
 입출력 fscanf , fread , fprintf
fwrite , fgetc , fseek
fputc , ftell , fgets
ferror , fputs , feof 
 파일닫기 fclose(fp) 

FILE * fopen(const char * filename , const char * mode)
     // 해당 파일에 대한 스트림을 생성, 생성된 파일 스트림의 파일 포인터를 리턴하는 함수.
    // 실패하면 NULL을 리턴
/* mode 정리할 것 */

int fclose(FILE* stream) // 파일 닫기가 성공하면 0을 리턴 , 실패하면 EOF(-1)을 리턴
int ferror(FILE* stream) // 스트림에 에러가 발생 0이 아닌 값을 리턴,
                                  // 에러가 발생하지 않았으면 0을 리턴
int feof(FILE* stream)  // 파일의 끝인지를 검사하는 함수 ,
      //읽은 위치가 파일의 끝이면 0이 아닌 값, 그렇지 않으면 0을 리턴

* 파일로부터 문자 하나를 입력받거나 출력할 때
int fgetc(FILE* stream);
int putchar(int c , FILE* fp)

* 파일로부터 한 줄의 문자열을 입력받거나 출력할 때
char *fgets(char* str , int n, FILE* stream)
int fputs(const char * str , FILE* fp)

* 형식화된 문자열을 파일로 입출력할 때
int fscanf(FILE* stream, const char* format [, argument ]...)
int fprintf(FILE* stream, const char* format [, argument ]...)

*바이너리 파일 입출력
size_t fread(void * buffer, size_t size, size_t count, FILE* stream)
     //파일로부터 버퍼로 바이너리 데이터를 읽어온다.
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
     //파일에 버퍼의 내용을 바이너리 데이터로 저장한다.
int fseek(FILE* stream, long offset, int origin)
long ftell(FILE* stream)