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 값을 확인하면 유용합니다.