雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊:

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ì)影響程序的安全性和健壯性

上一篇:簡(jiǎn)單談?wù)凜++ 中指針與引用

欄    目:C語言

下一篇:對(duì)比C語言中execv相關(guān)的執(zhí)行文件的三個(gè)函數(shù)

本文標(biāo)題:詳解C語言中的rename()函數(shù)和remove()函數(shù)的使用方法

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/2794.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有