일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 표준 입출력
- 안드로이드 앱 개발
- 파이썬
- 충남 천안
- 추천
- 캡슐화
- C++
- 네트워크 프로그래밍
- 실습
- 동영상
- 동영상 강의
- 표준 라이브러리 함수
- 클래스 다이어그램
- 언제나휴일
- 소스 코드
- 소켓 통신
- 프로젝트
- 유튜브 동영상 강의
- 졸업 작품
- 산책하기 좋은 곳
- 무료 동영상 강의
- 실습으로 다지는 c#
- c#
- 알고리즘
- 강의
- 원격 제어 프로그램
- 언제나 휴일
- c언어
- 졸업 작품 소재
- Windows Forms
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
fopen, fopen_s 함수 [C언어 표준 라이브러리 함수] 본문
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;
}
//출력 파일 쓰기 모드로 열기
fopen_s(&dfp,argv[1], "w");
char ch = '\0';
while (1) //원본 파일 스트림이 EOF를 만나지 않았다면 반복
{
ch = getc(sfp);
if (feof(sfp))
{
break;
}
putc(ch, dfp);//원본 파일에서 하나의 문자을 읽어온 후 출력 파일에 쓰기
}
//파일 스트림 닫기
fclose(sfp);
fclose(dfp);
printf("파일 복사 성공\n");
{//확인을 위하여 출력 파일 내용을 콘솔 화면에 출력
char cmd[256];
sprintf_s(cmd, sizeof(cmd), "type %s", argv[1]);
system(cmd);
}
return 0;
}
명령줄
> ex_fopen output.txt input.txt
input.txt 내용
이 책에서는 C99와 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.
이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다.
이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.
출력
파일 복사 성공
이 책에서는 C99와 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.
이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고
어떻게 사용하는지에 초점을 맞출 것입니다.
이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.
새로 만들어진 output.txt 내용
이 책에서는 C99와 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.
이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다.
이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.
테스트를 하실 때는 명령줄에서 하시기 바랍니다.
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");
char ch = '\0';
while (1) //원본 파일 스트림이 EOF를 만나지 않았다면 반복
{
ch = getc(sfp);
if (feof(sfp))
{
break;
}
putc(ch, dfp);//원본 파일에서 하나의 문자을 읽어온 후 출력 파일에 쓰기
}
//파일 스트림 닫기
fclose(sfp);
fclose(dfp);
printf("파일 복사 성공\n");
{//확인을 위하여 출력 파일 내용을 콘솔 화면에 출력
char cmd[256];
sprintf_s(cmd, sizeof(cmd), "type %s", argv[1]);
system(cmd);
}
return 0;
}
명령줄
> ex_fopen output.txt input.txt
input.txt 내용
이 책에서는 C99와 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.
이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다.
이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.
출력
파일 복사 성공
이 책에서는 C99와 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.
이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고
어떻게 사용하는지에 초점을 맞출 것입니다.
이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.
새로 만들어진 output.txt 내용
이 책에서는 C99와 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다.
이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다.
이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.
'C & C++ > C언어 표준 라이브러리 함수' 카테고리의 다른 글
fprintf 함수 [C언어 표준 라이브러리 함수] (1) | 2024.01.30 |
---|---|
fputs 함수 [C언어 표준라이브러리 함수] (0) | 2024.01.30 |
fputc 함수, putc 매크로 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.30 |
fclose 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.29 |
scanf, scanf_s 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.29 |
gets, gets_s 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.29 |
getchar 함수 [C언어 표준 라이브러리 함수] (0) | 2024.01.29 |
printf 함수 [C언어 표준 라이브러리 함수] (1) | 2024.01.26 |