詳解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)用進(jìn)程必須有寫權(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()會影響程序的安全性和健壯性
相關(guān)文章
C語言編程內(nèi)存分配通訊錄靜態(tài)實現(xiàn)示例代碼教程
這篇文章主要為大家介紹了C語言編程實現(xiàn)靜態(tài)的通訊錄示例代碼教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-10-10C語言 數(shù)組中重復(fù)的數(shù)字分析及方法
這篇文章主要介紹了C語言 數(shù)組中重復(fù)的數(shù)字分析及方法的相關(guān)資料,需要的朋友可以參考下2017-03-03