fopen_s
헤더 파일
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - STDIO.H
errno_t fopen_s(FILE **pfp, const char *path,const char *mode); 파일 스트림을 여는 함수
 
입력 매개 변수 리스트
pfp 연 파일 스트림을 설정할 FILE *형식 변수의 주소
path 절대 경로 혹은 상대 경로
mode rwba+의 조합 문자열, fopen과 같습니다.
반환 값
성공하면 0, 실패하면 에러 값
 
C11 표준에서는 FILE 구조체인 struct _iobuf의 내부 멤버를 숨기고 있습니다. 
개발자에 의해 직접 멤버에 접근하는 것을 방지하여 안전성을 도모하고 있습니다. 
그리고 fopen 함수의 반환 값을 첫 번째 입력 인자로 FILE 포인터 변수의 주소(FILE 포인터의 포인터)를 받아 설정하는 fopen_s 함수를 제공합니다. 
 
사용 예
//C언어 표준 라이브러리 함수 사용법 가이드
//errno_t fopen_s(FILE **pfp, const char *path,const char *mode); 파일 스트림을 여는 함수
//원본 파일을 복사하여 복사한 파일 내용을 type 명령어로 콘솔 화면에 출력
 
#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;
    }
 
    //원본 파일 읽기 모드로 열기
    fopen_s(&sfp,argv[2], "r");    
    if (sfp == NULL)//열기 실패일 때
    {
        perror("fopen 실패");//에러 메시지 출력
        return;
    }
 
    //출력 파일 쓰기 모드로 열기
    fopen_s(&dfp,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 표준 라이브러리 함수] - perror
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - fclose
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - feof
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - putc
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - getc
'언어 자료구조 알고리즘 > C11 표준 라이브러리 함수' 카테고리의 다른 글
| vprintf 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
|---|---|
| sscanf_s 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
| sscanf 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
| sprintf_s 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
| sprintf 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
| fscanf_s 함수[C언어 표준 라이브러리 함수 가이드 (1) | 2016.01.03 | 
| fscanf 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
| fgets 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
| getc 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 | 
| fgetc 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |