C언어/stdio.h

[C언어] remove 함수 (stdio.h)

아무일도없었다 2022. 8. 23. 23:49

사용범위

Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수

기능

C언어 표준 함수로 지정한 파일 또는 폴더를 삭제한다.

헤더

#include <stdio.h>

※ remove 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※


함수

int remove(const char* Filename);

파라미터

  • const char* Filename
    • 상대경로 혹은 절대경로의 파일 또는 폴더를 입력한다.

반환값

성공시   0을 반환한다.
실패시   0이 아닌 값을 반환한다.

잡학지식

remove 함수는 존재하지 않거나 이미 열린 파일 혹은 폴더를 제거할 수 없다.

remove 와 비슷한 unlink 함수는 C 표준(stdio.h) 이 아닌 unistd.h 에 포함되어있는 unix 함수로 windows 환경에서는 사용하지 않는다.

따라서 windows 가 포함된 크로스플랫폼 개발환경에서는 unlink 보다는 remove 함수를 쓰는것이 좋다. (url 참고)

 

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/unlink?view=msvc-170 

 

unlink

Learn more about: unlink

docs.microsoft.com


 

<소스 코드>

#include <stdio.h>

#define MAX_BUF_SIZE 128

int main() {
    FILE *fp;
    const char filename[] = "test.txt";
    char write_buffer[MAX_BUF_SIZE] = "Hello remove";
    char read_buffer[MAX_BUF_SIZE] = {0,};

    fp = fopen(filename, "w");
    if(fp != NULL) {
        fprintf(fp, "%s", write_buffer);
        printf("Create  & write [%s] file\n", filename);
        fclose(fp);
    } else {
        // fopen 실패 !
    }

    fp = fopen(filename, "r");
    if(fp != NULL) {
        fgets(read_buffer, MAX_BUF_SIZE - 1, fp);
        printf("read_buffer : %s\n", read_buffer);
        fclose(fp);
    } else {
        // fopen 실패 !
    }

    // test.txt 삭제
    remove(filename);

    fp = fopen(filename, "r");
    if(fp != NULL) {
        printf("fopen success [%s]\n", filename);
    } else {
        printf("fopen failed [%s]\n", filename);
    }

    return 0;
}

 

※ 실행 결과

Create  & write [test.txt] file
read_buffer : Hello remove
fopen failed [test.txt]

 

반응형