国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

詳解C語言中的rename()函數和remove()函數的使用方法

2020-01-26 14:55:06
字體:
來源:轉載
供稿:網友

C語言rename()函數:重命名文件或目錄
頭文件:

#include <stdio.h>

函數rename()用于重命名文件、改變文件路徑或更改目錄名稱,其原型為
  

 int rename(char * oldname, char * newname);

【參數】oldname為舊文件名,newname為新文件名。

【返回值】修改文件名成功則返回0,否則返回-1。

重命名文件:

  • 如果newname指定的文件存在,則會被刪除。
  • 如果newname與oldname不在一個目錄下,則相當于移動文件。

重命名目錄:

  • 如果oldname和oldname都為目錄,則重命名目錄。
  • 如果newname指定的目錄存在且為空目錄,則先將newname刪除。
  • 對于newname和oldname兩個目錄,調用進程必須有寫權限。
  • 重命名目錄時,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("已經把文件 %s 修改為 %s./n", oldname, newname);  else    perror("rename");  return 0;}

運行結果:

請告訴我一個文件的完整路徑:test.ncb您想修改為:test111.ncb已經把文件test. ncb修改為test111. ncb

例子首先定義兩個數組存儲用戶指定的文件名, 接著使用函數gets()接收用戶輸入的文件名,再使用函數rename()修改,如果成功則返回值為0,提示修改成功。

注意:實際開發中盡量避免使用gets()函數,gets()會影響程序的安全性和健壯性,請查看:C語言gets()函數:從流中讀取字符串

又如,設計一個在DOS命令行下修改文件的程序。
復制純文本新窗口

#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()函數:刪除文件或目錄
頭文件:

#include <stdio.h>

remove()函數用于刪除指定的文件,其原型如下:

  int remove(char * filename);

【參數】filename為要刪除的文件名,可以為一目錄。如果參數filename 為一文件,則調用unlink()處理;若參數filename 為一目錄,則調用rmdir()來處理。

【返回值】成功則返回0,失敗則返回-1,錯誤原因存于errno。

錯誤代碼:
EROFS  欲寫入的文件為只讀文件。
EFAULT  參數filename 指針超出可存取內存空間。
ENAMETOOLONG  參數filename 太長。
ENOMEM  核心內存不足。
ELOOP  參數filename 有過多符號連接問題。
EIO I/O  存取錯誤。

【實例】下面的程序演示了如何使用remove()函數刪除文件。

#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");}

運行上述程序,首先聲明用于保存文件名的字符數組變量,從控制臺獲取文件名,然后刪除該文件,并根據刪除結果輸出相應的提示信息。

注意:實際開發中盡量避免使用gets()函數,gets()會影響程序的安全性和健壯性

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 溆浦县| 化隆| 兴义市| 富蕴县| 颍上县| 东海县| 车险| 金秀| 新民市| 岫岩| 石景山区| 莱州市| 怀集县| 普洱| 甘肃省| 青浦区| 乐山市| 吴川市| 夏河县| 务川| 东平县| 革吉县| 冕宁县| 奉化市| 封丘县| 汝城县| 崇文区| 台南县| 凌源市| 任丘市| 古蔺县| 神池县| 巨野县| 班戈县| 山东省| 县级市| 石屏县| 吉林省| 邵东县| 四子王旗| 泾阳县|