可以通過C庫函數(shù)rename實現(xiàn)。
成都創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元九原做網(wǎng)站,已為上家服務(wù),為九原各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
頭文件:stdio.h
原型::int rename(char *oldname, char *newname);
功能: 給一個文件重命名,從原始的oldname改成新名字newname。如果oldname和newname帶有路徑,且所在文件夾不同,那么用該函數(shù)可以實現(xiàn)文件移動功能。刪除成功返回0,否則返回-1。
使用rename需要注意:
一、重命名文件:
如果newname指定的文件存在,則會被覆蓋。
如果newname與oldname不在一個目錄下,則相當(dāng)于移動文件。
二、重命名目錄:
如果oldname和oldname都為目錄,則重命名目錄。
如果newname指定的目錄存在且為空目錄,則先將newname刪除。
對于newname和oldname兩個目錄,調(diào)用進程必須有寫權(quán)限。
重命名目錄時,newname不能包含oldname作為其路徑前綴。例如,不能將/usr更名為/usr/foo/testdir,因為老名字( /usr/foo)是新名字的路徑前綴,因而不能將其刪除。
在stdio.h包里有兩個函數(shù)可以滿足你的要求:
注意,這兩個函數(shù)操作的文件必須要關(guān)閉,否則會執(zhí)行失敗,如果失敗,執(zhí)行完成后可以通過比較errno的值來確定失敗原因.
重命名:
int rename(const char *oldname, const char *newname);
參數(shù)解釋:
oldname:原文件名
newname:新文件名(可以指定全局路徑來移動文件)
返回值:
0:成功
-1:失敗,并將全局變量errno置為錯誤碼
刪除:
int remove(const char *filename);
參數(shù)解釋:
filename:要刪除的文件名
返回值:
0:成功
-1:失敗,并將全局變量errno置為錯誤碼
呵呵問題大其實邏輯上問題文件還打開能夠重命名或者刪除掉呢
應(yīng)該先關(guān)閉文件才能作上述操作啊我們windows系統(tǒng)里面對文件操作樣
正
rename函數(shù)功能是給一個文件重命名,用該函數(shù)可以實現(xiàn)文件移動功能,把一個文件的完整路徑的盤符改一下就實現(xiàn)了這個文件的移動。具體參見下面的程序示例說明。
頭文件:在Visual C++6.0中用stdio.h或者io.h
用 法: int rename(char *oldname, char *newname);
程序例:
#include
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;
}
執(zhí)行過程:
File to rename: D:\\in.dat
New name: G:\\in.dat
Renamed D:\\in.dat to G:\\in.dat.
這樣就實現(xiàn)了in.dat從D盤移動到G盤。
在unix或linux系統(tǒng)中:
#include
int rename(const char *oldname, const char *newname);
函數(shù)說明
(1) 如果oldname為一個文件而不是目錄,那么為該文件更名。在這種情況下,如果newname作為一個目錄已存在,則它不能重命名一個目錄。如果newname已存在,而且不是一個目錄,則先將其刪除然后將oldname更名為newname。對oldname所在目錄以及newname所在的目錄,調(diào)用進程必須具有寫許可權(quán),因為將更改這兩個目錄。
(2) 如若oldname為一個目錄,那么為該目錄更名。如果newname已存在,則它必須是一個目錄,而且該目錄應(yīng)當(dāng)是空目錄(空目錄指的是該目錄中只有. 和.. 項)。如果newname存在(而且是一個空目錄),則先將其刪除,然后將oldname更名為newname。另外,當(dāng)為一個目錄更名時,newname不能包含oldname作為其路徑前綴。例如,不能將/usr更名為/usr/foo/testdir,因為老名字( /usr/foo)是新名字的路徑前綴,因而不能將其刪除。
(3) 作為一個特例,如果oldname和newname引用同一文件,則函數(shù)不做任何更改而成功返回。
返回值 執(zhí)行成功則返回0,失敗返回-1,錯誤原因存于errno
范例
#include
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;
}
函數(shù)定義不可以嵌套的意思是:不可以在一個函數(shù)內(nèi)定義另一個函數(shù)例如voidfun(){voidfun1(){}}函數(shù)調(diào)用可以嵌套,函數(shù)調(diào)用只有函數(shù)名和參數(shù)fun()這叫調(diào)用例如voidfun(){fun1();}這樣是可以的
當(dāng)前題目:c語言重命名文件函數(shù),c語言變量名和函數(shù)名可以重名嗎
鏈接分享:http://jinyejixie.com/article30/hsidso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、微信公眾號、小程序開發(fā)、網(wǎng)站維護、網(wǎng)頁設(shè)計公司、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)