最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年09月01日 15:21:08   投稿:goldensun  
這篇文章主要介紹了詳解C語(yǔ)言中的rename()函數(shù)和remove()函數(shù)的使用方法,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

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

#include <stdio.h>

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

 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)程必須有寫(xiě)權(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ǔ)用戶(hù)指定的文件名, 接著使用函數(shù)gets()接收用戶(hù)輸入的文件名,再使用函數(shù)rename()修改,如果成功則返回值為0,提示修改成功。

注意:實(shí)際開(kāi)發(fā)中盡量避免使用gets()函數(shù),gets()會(huì)影響程序的安全性和健壯性,請(qǐng)查看:C語(yǔ)言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語(yǔ)言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()來(lái)處理。

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

錯(cuò)誤代碼:
EROFS  欲寫(xiě)入的文件為只讀文件。
EFAULT  參數(shù)filename 指針超出可存取內(nèi)存空間。
ENAMETOOLONG  參數(shù)filename 太長(zhǎng)。
ENOMEM  核心內(nèi)存不足。
ELOOP  參數(shù)filename 有過(guò)多符號(hào)連接問(wèn)題。
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í)際開(kāi)發(fā)中盡量避免使用gets()函數(shù),gets()會(huì)影響程序的安全性和健壯性

相關(guān)文章

最新評(píng)論

正蓝旗| 大洼县| 郎溪县| 东阳市| 丰台区| 富蕴县| 文昌市| 抚松县| 思南县| 栾川县| 石河子市| 当阳市| 安国市| 乐昌市| 柳林县| 德江县| 岑巩县| 额尔古纳市| 福州市| 蒙阴县| 黄梅县| 江口县| 宜良县| 抚宁县| 包头市| 白河县| 崇义县| 竹山县| 汝南县| 同德县| 曲靖市| 广昌县| 三穗县| 祥云县| 上饶县| 喜德县| 瑞丽市| 赤壁市| 蒙城县| 平遥县| 山丹县|