詳解C語言中的rename()函數(shù)和remove()函數(shù)的使用方法
C語言rename()函數(shù):重命名文件或目錄
頭文件:
#include <stdio.h>
函數(shù)rename()用于重命名文件、改變文件路徑或更改目錄名稱,其原型為
int rename(char * oldname, char * newname);
【參數(shù)】oldname為舊文件名,newname為新文件名。
【返回值】修改文件名成功則返回0,否則返回-1。
重命名文件:
- 如果newname指定的文件存在,則會被刪除。
- 如果newname與oldname不在一個目錄下,則相當(dāng)于移動文件。
重命名目錄:
- 如果oldname和oldname都為目錄,則重命名目錄。
- 如果newname指定的目錄存在且為空目錄,則先將newname刪除。
- 對于newname和oldname兩個目錄,調(diào)用進程必須有寫權(quán)限。
- 重命名目錄時,newname不能包含oldname作為其路徑前綴。例如,不能將/usr更名為/usr/foo/testdir,因為老名字( /usr/foo)是新名字的路徑前綴,因而不能將其刪除。
【實例】一個簡單的修改文件名的程序。
#include<stdio.h> #include <fcntl.h> int main(void) { char oldname[100], newname[100]; /* prompt for file to rename and new name */ printf("請告訴我一個文件的完整路徑: "); gets(oldname); printf("您想修改為: "); gets(newname); /* 更改文件名 */ if (rename(oldname, newname) == 0) printf("已經(jīng)把文件 %s 修改為 %s.\n", oldname, newname); else perror("rename"); return 0; }
運行結(jié)果:
請告訴我一個文件的完整路徑:test.ncb 您想修改為:test111.ncb 已經(jīng)把文件test. ncb修改為test111. ncb
例子首先定義兩個數(shù)組存儲用戶指定的文件名, 接著使用函數(shù)gets()接收用戶輸入的文件名,再使用函數(shù)rename()修改,如果成功則返回值為0,提示修改成功。
注意:實際開發(fā)中盡量避免使用gets()函數(shù),gets()會影響程序的安全性和健壯性,請查看:C語言gets()函數(shù):從流中讀取字符串
又如,設(shè)計一個在DOS命令行下修改文件的程序。
復(fù)制純文本新窗口
#include <stdio.h> void main(int argc, char **argv) { if(argc < 3) { printf("Usage: %s old_name new_name\n", argv[0]); return; } printf("%s=>%s", argc[1], argv[2]); if(rename(argv[1], argv[2]) < 0) printf("error!\n"); else printf("ok!\n"); }
C語言remove()函數(shù):刪除文件或目錄
頭文件:
#include <stdio.h>
remove()函數(shù)用于刪除指定的文件,其原型如下:
int remove(char * filename);
【參數(shù)】filename為要刪除的文件名,可以為一目錄。如果參數(shù)filename 為一文件,則調(diào)用unlink()處理;若參數(shù)filename 為一目錄,則調(diào)用rmdir()來處理。
【返回值】成功則返回0,失敗則返回-1,錯誤原因存于errno。
錯誤代碼:
EROFS 欲寫入的文件為只讀文件。
EFAULT 參數(shù)filename 指針超出可存取內(nèi)存空間。
ENAMETOOLONG 參數(shù)filename 太長。
ENOMEM 核心內(nèi)存不足。
ELOOP 參數(shù)filename 有過多符號連接問題。
EIO I/O 存取錯誤。
【實例】下面的程序演示了如何使用remove()函數(shù)刪除文件。
#include<stdio.h> int main(){ char filename[80]; printf("The file to delete:"); gets(filename); if( remove(filename) == 0 ) printf("Removed %s.", filename); else perror("remove"); }
運行上述程序,首先聲明用于保存文件名的字符數(shù)組變量,從控制臺獲取文件名,然后刪除該文件,并根據(jù)刪除結(jié)果輸出相應(yīng)的提示信息。
注意:實際開發(fā)中盡量避免使用gets()函數(shù),gets()會影響程序的安全性和健壯性
欄 目:C語言
下一篇:對比C語言中execv相關(guān)的執(zhí)行文件的三個函數(shù)
本文標(biāo)題:詳解C語言中的rename()函數(shù)和remove()函數(shù)的使用方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2794.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結(jié)
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05織夢dedecms什么時候用欄目交叉功能?