複製鏈接
請複製以下鏈接發送給好友

rename

(編程語言函數)

鎖定
rename是一個計算函數,功能是給一個文件重命名,用該函數可以實現文件移動功能,把一個文件的完整路徑的盤符改一下就實現了這個文件的移動。
外文名
rename
性    質
編程語言函數
所屬學科
計算機

rename函數簡介

頭文件:在Visual C++ 6.0中用stdio.h或者io.h

rename用法

int rename(char *oldname, char *newname);
程序例:
#include <stdio.h>
int main(void)
{
char oldname[80], newname[80];
/* prompt for file to rename and new name */
printf("File to rename: ");
gets(oldname);
printf("New name: ");
gets(newname);
/* Rename the file */
if (rename(oldname, newname) == 0)
printf("Renamed %s to %s.\n", oldname, newname);
else
perror("rename");
return 0;
}
執行過程:
File to rename: D:\\in.dat
New name: G:\\in.dat
Renamed D:\\in.dat to G:\\in.dat.
這樣就實現了in.dat從D盤移動到G盤。
在Unix或Linux系統中
#include <stdio.h>
int rename(const char *oldname, const char *newname);

rename函數説明

  1. 如果oldname為一個文件而不是目錄,那麼為該文件更名。在這種情況下,如果newname作為一個目錄已存在,則它不能重命名一個目錄。如果newname已存在,而且不是一個目錄,則先將其刪除然後將oldname更名為newname。對oldname所在目錄以及newname所在的目錄,調用進程必須具有寫許可權,因為將更改這兩個目錄。
  2. 如若oldname為一個目錄,那麼為該目錄更名。如果newname已存在,則它必須是一個目錄,而且該目錄應當是空目錄(空目錄指的是該目錄中只有. 和.. 項)。如果newname存在(而且是一個空目錄),則先將其刪除,然後將oldname更名為newname。另外,當為一個目錄更名時,newname不能包含oldname作為其路徑前綴。例如,不能將/usr更名為/usr/foo/testdir,因為老名字( /usr/foo)是新名字的路徑前綴,因而不能將其刪除。
  3. 作為一個特例,如果oldname和newname引用同一文件,則函數不做任何更改而成功返回。
返回值 執行成功則返回0,失敗返回-1,錯誤原因存於errno

rename範例

#include <stdio.h>
int main(int argc,char **argv)
{
if(argc < 3)
{
printf("Usage: %s old_name new_name\n",argv[0]);
return -1;
}
printf("%s => %s\n", argv[1], argv[2]);
if(rename(argv[1], argv[2]) < 0 )
printf("error!\n");
else
printf("ok!\n");
return 0;
}