언어 자료구조 알고리즘/C11 표준 라이브러리 함수

fopen 함수 [C언어 표준 라이브러리 함수 가이드]

언제나휴일 2016. 1. 3. 14:56
반응형

fopen


헤더 파일

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - STDIO.H

 

FILE *fopen(const char *path,const char *mode); 파일 스트림을 여는 함수

입력 매개 변수 리스트

path 절대 경로 혹은 상대 경로

mode rwba+의 조합 문자열

반환 값

성공 시 파일 스트림 포인터, 실패 시 NULL 포인터

mode"r", "w", "a", "rb", "wb", "r+", "w+", "a+" "r+b", "rb+", "w+b", "wb+", "a+b", "ab+"중에서 사용합니다.

"r" 읽기 모드

"w" 쓰기 모드, 새로운 파일을 생성, 이미 있으면 파일 내용을 지움

"a" 추가 모드, 파일이 없으면 새로운 파일을 생성, 쓰기 작업 시 파일의 끝에 쓰여짐

"rb", "wb", "ab" 는 바이너리 파일을 여는 것입니다. 그 외의 사항은 "r", "b", "a"와 같음

"r+" "w+", "a+" 읽기 쓰기가 가능한 모드입니다. 그 외의 사항은 "r", "w", "a"와 같음

"r+b", "rb+", "w+b", "wb+", "a+b", "ab+"는 바이너리 파일을 여는 것입니다. 그 외의 사항은 "r+, "w+', "a+"와 같습니다.

a 모드로 열었을 때 쓰기 함수를 호출하면 파일의 끝으로 이동 후에 쓰여집니다.

C11 표준에서는 FILE 구조체인 struct _iobuf의 내부 멤버를 숨기고 있습니다.
개발자에 의해 직접 멤버에 접근하는 것을 방지하여 안전성을 도모하고 있습니다.
그리고 fopen 함수의 반환 값을 첫 번째 입력 인자로 파일 포인터 변수의 주소(파일 포인터의 포인터)를 받아 설정하는 fopen_s 함수를 제공합니다.

사용 예

//C언어 표준 라이브러리 함수 사용법 가이드

//FILE *fopen(const char *path,const char *mode); 파일 스트림을 여는 함수

//원본 파일을 복사하여 복사한 파일 내용을 type 명령어로 콘솔 화면에 출력

#pragma warning(disable:4996)

#include <stdlib.h>

#include <stdio.h>

int main (int argc,char **argv)

{

    FILE * sfp, *dfp;

 

    if (argc != 3)//command line에서 인자를 잘못 사용

    {

        printf("사용법: %s [출력 파일명] [원본 파일명]", argv[0]);

        return ;

    }   

 

    //원본 파일 읽기 모드로 열기

    sfp = fopen (argv[2],"r");

    if (sfp == NULL)//열기 실패일 때

    {

        perror("fopen 실패");//에러 메시지 출력

        return;

    }

    //출력 파일 쓰기 모드로 열기

    dfp = fopen(argv[1], "w");

    while ( ! feof(sfp) ) //원본 파일 스트림이 EOF를 만나지 않았다면 반복

    {

        putc(getc(sfp), dfp);//원본 파일에서 하나의 문자을 읽어온 후 출력 파일에 쓰기

    }

    //파일 스트림 닫기

    fclose(sfp);

    fclose(dfp);

    printf("파일 복사 성공\n");

    {//확인을 위하여 출력 파일 내용을 콘솔 화면에 출력

        char cmd[256];

        sprintf_s(cmd, sizeof(cmd), "type %s", argv[1]);

        system(cmd);

    }

    printf("\n");

    return 0;

}

명령줄

ex_fopen output.txt input.txt

input.txt 내용

이 책에서는 C99 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.

이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다.

이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.

출력

파일 복사 성공

이 책에서는 C99 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.

이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고

어떻게 사용하는지에 초점을 맞출 것입니다.

이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.

새로 만들어진 output.txt 내용

이 책에서는 C99 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.

이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다.

이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.


사용한 함수

 

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - printf

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - putc

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - getc

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - fclose 

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - sprintf_s

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - system

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - perror

 

관련 함수

 

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - fopen_s

반응형