程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 詳解C說話中的rename()函數和remove()函數的應用辦法

詳解C說話中的rename()函數和remove()函數的應用辦法

編輯:關於C++

詳解C說話中的rename()函數和remove()函數的應用辦法。本站提示廣大學習愛好者:(詳解C說話中的rename()函數和remove()函數的應用辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C說話中的rename()函數和remove()函數的應用辦法正文


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()會影響法式的平安性和硬朗性

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved