1. _s 의 의미
safety
2. 입력서식
fopen 함수 :
FILE * fp = fopen(const char * filename, const char * mode);
fopen_s 함수 :
FILE * fp = fopen_s(&fp, const char * filename, const char * mode);
괄호 앞부분에 파일의 이름(또는 경로 포함한 이름.) 그리고 괄호 뒷부분에 입출력 모드를 써주면 된다.
fopen_s 함수를 보면 fopen 함수의 괄호 앞부분에 파일포인터의 주소(&fp)를 추가한 것에 불과하다.
3.함수의 리턴값
정상적으로 파일이 열리지 않았을때 오류메시지를 출력하려면 어떻게 해야할까?
함수의 리턴값으로서 오류메시지를 출력할 수 있다.
정상적으로 파일을 읽어오느냐 읽어오지 못하느냐에 따라 함수의 리턴값이 달라지기 때문이다.
fopen 함수는 파일포인터를 통해 구분한다.
int main (void)
{
FILE * fp = fopen("data.txt", "wt")
if (fp==NULL)
{puts("파일 오픈 실패!"
return -1
}
~파일 오픈해서 구동할 함수 넣기~
}
이런 식으로 사용한다.
fopen_s 함수는
errno_t err; 와 같이 오류코드를 return 받는다.
errno_t 는 VS에서 지원하는 다양한 함수의 반환값으로 사용된다.
이 값이 0이면 성공을 의미하며, 0이 아닐 때는 오류가 발생하여 해당 함수가 실패했음을 의미한다.
오류의 내용에 따라 다양한 값을 가지게 된다.
fopen_s에서 파일이 정상적으로 열리지 않았을 경우 프로그램이 종료되게 하려면 아래와 같이 소스를 짠다.
#include <stdio.h>
int main(void)
{
errno_t err;
FILE *fp;
err = fopen_s(&fp, "data.txt", "wt"); // 전체 path 경로를 지정, 아니면 실행파일이 있는 곳에 생성됨
if (err == 0)
puts("파일오픈 성공!\n");
else {
puts("파일 오픈 실패\n");
return -1;
}
fputc('A', fp);
fputc('B', fp);
fputs("My name is Hong \n", fp);
fputs("Your name is Yoon \n", fp);
fflush(stdout);
fclose(fp);
return 0;
}
덧글|덧글 쓰기|신고