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

C/C++ 파일 이름 변경 방법 – rename() 함수 완벽 정리

C 표준 라이브러리의 int rename(const char *old_filename, const char *new_filename) 함수는 old_filename이 가리키는 기존 파일의 이름을 new_filename으로 변경하는 역할을 합니다. 이 함수를 활용하면 파일 이름을 바꾸는 것은 물론, 경로를 함께 지정해 파일을 이동시키는 것도 가능합니다.

rename() 함수 선언

int rename(const char *old_filename, const char *new_filename)

매개변수 설명

  • old_filename − 이름을 변경(또는 이동)할 대상 파일의 이름이 담긴 C 문자열입니다.
  • new_filename − 변경 후 새로 지정할 파일 이름이 담긴 C 문자열입니다.

반환값

  • 성공 시: 0을 반환합니다.
  • 실패 시: -1을 반환하며, 오류의 원인에 따라 errno가 적절히 설정됩니다.

사용 예제

다음 예제는 file.txt라는 파일의 이름을 newfile.txt로 변경하는 프로그램입니다.

#include <stdio.h>
int main () {
   int ret;
   char oldname[] = "file.txt";
   char newname[] = "newfile.txt";
   ret = rename(oldname, newname);
   if(ret == 0) {
      printf("파일 이름이 성공적으로 변경되었습니다.");
   } else {
      printf("오류: 파일 이름을 변경할 수 없습니다.");
   }
   return(0);
}

실행 결과

내용이 담긴 text 파일 file.txt가 있다고 가정해 보겠습니다. 위 프로그램을 컴파일한 후 실행하면 다음과 같은 메시지가 출력되며, 해당 파일은 newfile.txt라는 이름으로 변경됩니다.

파일 이름이 성공적으로 변경되었습니다.

참고 사항

rename() 함수를 사용할 때는 몇 가지 주의할 점이 있습니다. 먼저, 새 파일 이름(new_filename)과 동일한 이름의 파일이 이미 존재하는 경우 동작은 운영체제마다 다를 수 있으므로 사전에 파일 존재 여부를 확인하는 것이 좋습니다. 또한 파일이 열려 있는 상태에서 이름을 변경하면 실패할 수 있으므로, fopen() 등으로 연 파일은 fclose()로 반드시 닫은 후 rename()을 호출해야 합니다. 마지막으로 실패 원인을 파악하려면 반환값과 함께 errno 값을 확인하면 유용합니다.