source

파일이 없는 경우 파일을 만듭니다(C).

factcode 2022. 8. 13. 12:07
반응형

파일이 없는 경우 파일을 만듭니다(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);

한다면fptrNULL열려 있는 파일이 없습니다.그렇기 때문에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

반응형