본문 바로가기
프로그래머의 길/C & C++

고수준 파일 입출력 함수 정리

by 하늘아래. 2007. 3. 7.
반응형
 

고수준 파일 입출력 함수 정리


1) 파일(스트림)열기 : fopen

FILE *fopen(const char *filename, const char *mode);

ex) FILE *fp;

    fp=fopen("file1.c","r");

반환값) 성공: 파일 포인터    실패: NULL


2) 파일 닫기: fcolse

int fclose(FILE *fp);

ex) fclose(fp);

반환값) 성공: 0    실패: EOF


3) 파일에서 문자 읽기: fgetc

int fgetc(FILE *fp);

ex) int ch;

    ch=fgetc(fp);

반환값) 성공: 입력받은 문자    실패: EOF


4) 파일에 문자 출력: fputc

int fputc(int c, FILE *fp);

ex) int ch;

    fputc(ch,fp);

반환값) 성공: 출력한 문자    실패: EOF


5) 파일에서 문자열 읽기: fgets

   파일에 문자열 출력  : fputs

char *fgets(char *string, int n, FILE *fp);   // 버퍼의 사이즈 만큼 입력 받음 범위 초과시 버림

int fputs(const char *string,FILE *fp);        // 출력시 자동으로 개행을 해준다

ex) char buffer[512];

    fp=fopen("file1.data","r");

    while(fgets(buffer,512,fp))

    fputs(buf,fp2);

fgets 반환값) 성공: 문자열에 대한 포인터   실패: NULL

      puts 반환값)  성공: 음수가 아닌값   실패: EOF


파일 입출력이 아닌 경우
char *fgets(char *string, int n, stdin);


6) 파일을 통해 서식을 갖춘데이터를 입력받는다: fscanf

   데이터를 서식화하여 파일로 출력한다: fprintf

      int fscanf(FILE*stream, const char *format, 변수들의 주소);

      반환값)  성공: 입력된 항목수    실패: -1

      int fprintf(FILE*stream, const char *format, 변수들);

      반환값)  성공: 출력한 문자 수   실패: -1

       

7) 파일의 이진 자료 입출력 : fread, fwrite

int fread(char *buffer, int num_bytes, int count, FILE *fp);

int fwrite(char *buffer, int num_bytes, int count, FILE *fp);

ex) char buffer[512];

    fp=fopen("file1.data","r");

    fp2=fopen("file1.bak","w");

    while( fread(buffer,100,1,fp) != 0 )

    fwrite(buffer,100,1,fp2);

    fclose(fp);

    fclose(fp2);

      fread 반환값) 성공: 입력된 데이터 수   실패: -1

      fwrite 반환값) 성공: 출력한 데이터 수   실패: -1


8) 파일의 임의 접근 : fseek

int fseek(FILE *fp, long int offset, int ptrname);

ptrname: 이동위치

SEEK_SET(0) : 파일의 처음

SEEK_CUR(1) : 현재 위치

SEEK_END(2) : 파일의 끝

ex) fseek(fp,234L,0); /* 파일의 처음에서부터 234번째 이동한 위치로

                        파일포인터 이동 */

      반환값) 성공: 0  실패: -1


9) 파일의 현재 위치 알려주는 : ftell

long ftell(FILE *fp);

ex) printf("%ld ",ftell(fp));

반환값) 성공: 읽기쓰기 포인터값 반환    실패: -1


10) 파일 포인터 재설정 :rewind

void rewind(FILE *fp);


11) 파일의 상태 파악: feof, ferror

int feof(FILE *fp);

반환값) 파일의 끝이면 참 을 반환, 끝이 아니면 0 을 반환

int ferror(FILE *fp);

반환값) 파일이 오류이면 참, 오류가 아니면 0을 반환



12) 출력 버퍼를 파일에 기록 : fflush

int fflush(FILE *fp);

fp 가 출력 파일이라면 자료를 강제로 파일 fp에 기록한다.

fp가 입력 파일이라면 버퍼의 자료를 소거(clear)한다.


fflush(stdin);
파일 입출력이 아닌 일반 키보드 입출력 버퍼 지우기


13) 방금 읽은 문자를 파일로 되돌린다 : ungetc

      int ungetc(int c, FILE*stream);

      반환값) 성공: 되돌린 문자를 반환   실패: -1


참고 :

if( gets(str) == NULL ) puts("입력 실패하엿습니다.\n");
만약 입력이 성공하면 gets(str)은 str주소를 반환한다.
실패하면
NULL값 반환.

반응형