본문 바로가기
C/C Library

fopen

by memora 2024. 8. 21.

Index로 돌아가기

 

【기  능】 파일을 open한다.
 
 【소  속】 stdio.h 
   #include <stdio.h>
 
 【서  식】  
   FILE *fopen(const char *filename, const char *mode);
 
 【설  명】  
   파일명(filename) 으로 지정된 파일을 지정 모드(mode)로 오픈한다.
 
 【인  수】  
   const char *filename : 오픈하는 파일명
   const char *mode : 오픈 모드

 【모  드】   

  파일 종류 동작 파일이 존재할 때 파일이 존재하지 않을 때
"r"  텍스트 읽기 전용 정상 에러(NULL 포인터)
"w" 텍스트 쓰기 전용 초기화(내용 삭제) 신규작성
"a"   텍스트 추가 쓰기 전용 내용 보존(마지막에 추가) 신규작성
"r+"  텍스트 읽기쓰기 정상 에러(NULL 포인터)
"w+" 텍스트 쓰기 읽기 초기화(내용 삭제)  신규작성
"a+" 텍스트 추가 쓰기,  읽기 내용 보존(마지막에 추가) 신규작성
"rb" 바이너리 읽기 전용 정상 에러(NULL 포인터)
"wb" 바이너리 쓰기 전용 초기화(내용 삭제)  신규작성


 ☆ 텍스트 모드 
    쓰기 : 줄바꾸기 문자'\n'(0x0a) ⇒ '\r' / '\n'(0x0d / 0x0a)로 변환
    읽기 :  '\r' / '\n'(0x0d / 0x0a) ⇒ 줄바꾸기 문자'\n'(0x0a) 로 변환
    0x1a : EOF(파일 마지막)로 인식

 ☆ 바이너리 모드
    읽기/쓰기 : 줄바꾸기 문자의 변환없음
    0x1a : EOF(파일 마지막)로 인식하지 않음

 【리턴 값】
  성공 : 파일 포인터
  실패 : NULL 포인터
 
 【사용 예】
 #include <stdio.h>
 #include <stdlib.h>

 int main(void)
 {
     FILE *fp;
     char readbuf[100];
     int iRetn = 0;

    /* 읽기 모드로 파일을 오픈한다 */
    if( (fp = fopen("test_data.txt", "a+") ) == NULL ) {
        printf("파일 오픈 에러\n");
        exit(EXIT_FAILURE);
    }
    else{
        printf("파일 오픈 성공\n");
    }

    /* 오픈한 파일에 한 줄의 문자열을 출력한다 */
    iRetn = fputs("file open with mode a\n", fp);
    if(iRetn == EOF){
        printf("파일 쓰기 실패\n");
    }

    /* 오픈한 파일의 내용을 읽어서 문자열을 출력한다 */
    while(iRetn != EOF){
         iRetn = fgets(readbuf, sizeof(strBuff), fp);
         if(iRetn == EOF){
             printf("파일 읽기 실패\n");
         }
         else{
            printf("읽은 문자열 = %s\n", readbuf);
         }
    }

    /* 오픈한 파일을 닫는다(close) */
    iRetn = fclose(fp);
    if(iRetn != 0){
        printf("파일 클로즈 에러\n");
    }
    else{
        printf("파일 클로즈 성공\n");
    }

    return 0;
  }

  【결   과】
파일 오픈 성공
파일 쓰기 성공
파일 클로즈 성공

  【파일 내용】
ABCDE12345
file open with mode a

 

Index로 돌아가기

반응형

'C > C Library' 카테고리의 다른 글

remove  (0) 2024.09.04
freopen  (0) 2024.08.30
fgetpos  (0) 2024.08.15
fputs  (0) 2024.08.14
fgets  (0) 2024.08.13