반응형
파일이 없는 경우 파일을 만듭니다(C).
파일이 있으면 프로그램에서 열거나 파일을 생성하려고 합니다.다음 코드를 사용하려고 하는데 freopen.c에서 debug assertion이 나타납니다.fclose를 사용한 후 바로 fopen을 사용하는 것이 좋을까요?
FILE *fptr;
fptr = fopen("scores.dat", "rb+");
if(fptr == NULL) //if file does not exist, create it
{
freopen("scores.dat", "wb", fptr);
}
일반적으로 이 작업은 단일 시스템 내에서 수행해야 합니다. 그렇지 않으면 레이스 상태가 됩니다.
읽기 및 쓰기를 위해 열리며 필요한 경우 파일을 만듭니다.
FILE *fp = fopen("scores.dat", "ab+");
읽고 새 버전을 처음부터 작성하려면 두 단계로 수행합니다.
FILE *fp = fopen("scores.dat", "rb");
if (fp) {
read_scores(fp);
}
// Later...
// truncates the file
FILE *fp = fopen("scores.dat", "wb");
if (!fp)
error();
write_scores(fp);
한다면fptr
이NULL
열려 있는 파일이 없습니다.그렇기 때문에freopen
그거, 그냥...fopen
바로 그거에요.
FILE *fptr;
fptr = fopen("scores.dat", "rb+");
if(fptr == NULL) //if file does not exist, create it
{
fptr = fopen("scores.dat", "wb");
}
주의: 파일이 읽기 모드인지 쓰기 모드인지에 따라 프로그램의 동작이 달라지기 때문에 대부분의 경우 어떤 경우에 해당하는지 나타내는 변수도 유지할 필요가 있습니다.
완전한 예
int main()
{
FILE *fptr;
char there_was_error = 0;
char opened_in_read = 1;
fptr = fopen("scores.dat", "rb+");
if(fptr == NULL) //if file does not exist, create it
{
opened_in_read = 0;
fptr = fopen("scores.dat", "wb");
if (fptr == NULL)
there_was_error = 1;
}
if (there_was_error)
{
printf("Disc full or no permission\n");
return EXIT_FAILURE;
}
if (opened_in_read)
printf("The file is opened in read mode."
" Let's read some cached data\n");
else
printf("The file is opened in write mode."
" Let's do some processing and cache the results\n");
return EXIT_SUCCESS;
}
언급URL : https://stackoverflow.com/questions/9840629/create-a-file-if-one-doesnt-exist-c
반응형
'source' 카테고리의 다른 글
MacOS Catalina(v 10.15.3): 개발자를 확인할 수 없으므로 "chromedriver"를 열 수 없습니다.Chrome 브라우저를 시작할 수 없습니다. (0) | 2022.08.13 |
---|---|
역할과 부여된 역할의 차이스프링 보안 기관 (0) | 2022.08.13 |
mac(localhost)의 vue-discription 기록 모드 직접 액세스 오류 발생 (0) | 2022.08.13 |
C99의 func()와 func(void)의 비교 (0) | 2022.08.13 |
vuej + vuex 폼 처리의 올바른 방법은 무엇입니까? (0) | 2022.08.13 |