a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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()會影響程序的安全性和健壯性

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

圖片精選

主站蜘蛛池模板: 国产一区欧美 | 久久久久久久久99精品 | 黄色精品网站 | 黄色片av| 欧美日韩中文字幕在线 | 日韩福利在线观看 | 日韩中文一区二区 | 日日骚视频 | 亚洲色图 偷拍自拍 | 国产精品久久久久久吹潮 | 亚洲精品中文字幕 | 久久久99精品免费观看 | 国产免费一区二区 | 色婷婷综合久久久 | 国产在线一区观看 | 日本h视频在线观看 | 久久久一区二区 | 欧美日韩在线观看中文字幕 | 四虎影音| 国产成人亚洲精品 | 成人看片在线观看 | 亚洲精品不卡 | 亚洲精品天堂 | 啪一啪 | 亚洲免费在线视频 | 欧美| 中文字幕亚洲一区二区三区 | 久久久婷婷 | 久久国产精品毛片 | 午夜电影福利 | 国产午夜精品美女视频明星a级 | 欧美一级黄色片 | 日韩精品一区二区三区老鸭窝 | 综合网在线 | 青青青草视频在线 | 日韩黄视频 | 久久精品久久久久电影 | 日韩视频精品在线 | 精品在线一区二区 | 精品国产一区二区三区电影小说 | 黄色毛片免费看 |