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


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 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ù)求
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?


