Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C언어 rename() 함수로 파일 이름 변경하기 – 문법, 예제 코드, 실행 결과 총정리

C 언어의 rename() 함수는 파일이나 디렉터리의 이름을 기존 이름(oldname)에서 새 이름(newname)으로 변경하는 표준 라이브러리 함수입니다. 이 동작은 파일을 옮기는 이동(move) 연산과 본질적으로 같기 때문에, rename() 함수를 활용하면 파일을 다른 경로로 이동시키는 용도로도 사용할 수 있습니다.

rename() 함수는 표준 입출력 헤더 파일인 stdio.h에 선언되어 있으며, 별도의 설치 없이 바로 사용할 수 있습니다.

rename() 함수 문법

int rename(const char *oldname, const char *newname);

rename() 함수의 주요 특징

  • 두 개의 매개변수를 받습니다. 하나는 기존 파일 이름(oldname), 다른 하나는 새 파일 이름(newname)입니다.

  • 두 매개변수 모두 상수 문자형 포인터(const char *) 타입으로, 파일의 기존 이름과 새 이름을 나타냅니다.

  • 파일 이름 변경에 성공하면 0을 반환하고, 실패하면 0이 아닌 값을 반환합니다.

  • 이름 변경 시점에 newname과 동일한 이름의 파일이 이미 존재한다면, 기존에 있던 파일은 새 파일로 덮어써지며(대체) 사라집니다. 따라서 중요한 파일이 실수로 삭제되지 않도록 주의해야 합니다.

파일 이름 변경 알고리즘

아래 알고리즘을 참고하면 rename() 함수를 이용해 파일 이름을 손쉽게 변경할 수 있습니다.

1단계 − 필요한 변수를 선언한다.

2단계 − 기존 파일 경로를 입력받는다.

3단계 − 새 파일 경로를 입력받는다.

4단계 − rename(old, new)의 반환값이 0인지 확인한다.

반환값이 0이면 → "파일 이름 변경 성공" 출력
그렇지 않으면 → "이름을 변경할 수 없습니다." 출력

C 프로그램 예제 코드

다음은 rename() 함수를 사용하여 파일 이름을 변경하는 C 프로그램입니다.

#include <stdio.h>
int main(){
    char old[100], new[100];
    printf("Enter old file path: ");
    scanf("%s", old);
    printf("Enter new file path: ");
    scanf("%s", new);
    if (rename(old, new) == 0){
        printf("File renamed successfully.\n");
    }
    else{
        printf("Unable to rename files\n");
    }
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Run 1:
Enter old file path: test.exe
Enter new file path: test1.exe
File renamed successfully.

Run 2:
Enter old file path: priya.c
Enter new file path: bhanu.c
Unable to rename files

실행 결과 해석

Run 1에서는 test.exe 파일이 실제로 존재하기 때문에 이름 변경이 성공적으로 완료되었습니다. 반면 Run 2에서는 priya.c라는 파일이 디스크에 존재하지 않으므로 rename() 함수가 실패하고 0이 아닌 값을 반환하여 오류 메시지가 출력된 것입니다.

실무에서는 반환값만 확인하는 것보다 perror() 함수나 errno 값을 함께 확인하면 파일이 존재하지 않는 경우(ENOENT), 권한이 없는 경우(EACCES) 등 구체적인 실패 원인을 파악할 수 있어 더 안정적인 오류 처리가 가능합니다.