c語言 刪除指定文件

C語言刪除指定文件或目錄,參考代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<io.h>
#include<direct.h>
#include<errno.h>

//判斷是否是".."目錄和"."目錄
inlineboolis_special_dir(constchar*path)
{
returnstrcmp(path,"..")==0||(path,".")==0;
}

//判斷文件屬性是目錄還是文件
inlineboolis_dir(intattrib)
{
returnattrib==16||attrib==18||attrib==20;
}

//顯示刪除失敗原因
inlinevoidshow_error(constchar*file_name=NULL)
{
errno_terr;
_get_errno(&err);
switch(err)
{
caseENOTEMPTY:
printf("Givenpathisnotadirectory,thedirectoryisnotempty,. ");
break;
caseENOENT:
printf("Pathisinvalid. ");
break;
caseEACCES:
printf("%,can'tdelete. ",file_name);
break;
}
}

inlinevoidget_file_path(constchar*path,constchar*file_name,char*file_path)
{
strcpy_s(file_path,sizeof(char)*_MAX_PATH,path);
file_path[strlen(file_path)-1]='';
strcat_s(file_path,sizeof(char)*_MAX_PATH,file_name);
strcat_s(file_path,sizeof(char)*_MAX_PATH,"\*");
}

//遞歸搜索目錄中文件並刪除
inlinevoiddelete_file(char*path)
{
_finddata_tdir_info;
_finddata_tfile_info;
intptr_tf_handle;
chartmp_path[_MAX_PATH];
if((f_handle=_findfirst(path,&dir_info))!=-1)
{
while(_findnext(f_handle,&file_info)==0)
{
if(is_special_dir(file_info.name))
continue;
if(is_dir(file_info.attrib))//如果是目錄,生成完整的路徑
{
get_file_path(path,file_info.name,tmp_path);
delete_file(tmp_path);//開始遞歸刪除目錄中的內容
tmp_path[strlen(tmp_path)-2]='';
if(file_info.attrib==20)
printf("Thisissystemfile,can'tdelete! ");
else
{
//刪除空目錄,必須在遞歸返回前調用_findclose,否則無法刪除目錄
if(_rmdir(tmp_path)==-1)
{
show_error();//目錄非空則會顯示出錯原因
}
}
}
else
{
strcpy_s(tmp_path,path);
tmp_path[strlen(tmp_path)-1]='';
strcat_s(tmp_path,file_info.name);//生成完整的文件路徑

if(remove(tmp_path)==-1)
{
show_error(file_info.name);
}

}
}
_findclose(f_handle);//關閉打開的文件句柄,並釋放關聯資源,否則無法刪除空目錄
}
else
{
show_error();//若路徑不存在,顯示錯誤信息
}
}

intmain(intargc,char**argv)
{
delete_file("C:\DocumentsandSettings\Administrator\LocalSettings\TemporaryInternetFiles\*");
system("pause");
return0;
}

❷ 求教:為什麼C語言中 用remove()刪除文件,有時可以,有時又不可以呢

#include<stdio.h>
int main(void)
{
char file[80]="c:\\ti\\_DEISREG.ISR";
printf("File to delete: ");
gets(file);
if (remove(file) == 0)
printf("Removed %s.\n",file);
else perror("remove");
return 0;
}
記得如果用字元串,路徑名里的'\'都要是經過'\'轉義的,就是寫為"\\"
路徑名最好是絕對的版,相對路徑要保證和權生成的程序(*.exe)所在文件夾一致。。。

❸ c語言怎樣刪除文件

首先要說明的是這里並不是指刪除C編譯器裡面的文件,呵呵,如果只是要刪除那些文件的話,那就很簡單,直接選中文件後按delete鍵就可以刪除了,但是我們刪除那些文件幹嘛?我們還要用它寫程序啊,呵呵。我在這里要說的是,怎樣使用C語言編寫程序來刪除文件。

在C語言中,我們可以使用remove()函數來刪除指定的文件,具體語法為:
Int remove(char *filename);其中filename是一個指向字元串的指針,該字元串可以組成有效的文件名,也可以包含路徑說明。如果我們要刪除D盤下的ABC.txt文件,我們就可以這樣寫:remove(「D:\ABC.txt」);

❹ c語言remove可以刪除系統文件嗎

int.
在這里是語氣詞的意思,呵呵。怎麼跑到程序設計這來了
希望對你有幫助

❺ C語言刪除命令如何編寫

用remove函數
功 能: 刪除一個文件
用 法: int remove( const char *filename);
頭文件:在Visual C++ 6.0中可以用stdio.h
返回內值:如容果刪除成功,remove返回0,否則返回EOF(-1)。

❻ C語言刪除字元串中指定字元

一、問題描述:從鍵盤輸入一個字元串給str和一個字元給c,刪除str中的所內有字元c並輸容出刪除後的字元串str。

1、輸入:第一行是一個字元串; 第二行是一個字元。

2、輸出:刪除指定字元後的字元串。

二、設計思路:

1、 同插入問題,定義兩個字元數組a,b。以及標志刪除位置的int型pos。

2、用gets函數輸入數組a的值,並利用for循環將數組a 到 數組b。

3、利用for循環,令pos位的數組b元素賦值到a。

三、實現代碼如下:

具體執行結果同上。

❼ c語言刪除程序代碼

刪除代碼?我不知道你具體的意思。是要刪除什麼代碼?
在C中,如果想讓一段代碼不起作用。可以用/* */ 包起來,或者在代碼前面用預編譯指令 #if 0
代碼。。。
#endif
這樣就可以讓這段代碼不起作用。這個要比注釋掉來得好;

如果是刪除文件,可以用int remove(char *filenae) (返回0成功).

❽ 關於c語言中remove的問題,在線等,急急急

代碼沒問題啊,能刪除,我試過了。可能是你已經刪除了,所以再次運行刪除失敗
還有一個原因,這個文件被其他程序用了,才你的程序刪除不了吧。

❾ c語言remove返回不成功

刪除文件復 用 DEL 或 ERASE, 可以帶上制選項 /F (強迫)。
rename 只可在原文件夾里 重命名文件,不能換文件夾。
移動文件 用 move
被 重命名文件 和 要刪 的 文件 不能 是被打開 和 在讀寫中的文件。

如果是 VISTA 系統,rename 等 有可能失敗。或rename後,名字自動回老名字。什麼原因,要問微軟。

❿ C語言-刪除字元串中指定的字元

一、問題描述:從鍵盤輸入一個字元串給str和一個字元給c,刪除str中的所有字元c並輸出刪除後的字元串str。

1、輸入:第一行是一個字元串; 第二行是一個字元。

2、輸出:刪除指定字元後的字元串。

二、設計思路:

1、 同插入問題,定義兩個字元數組a,b。以及標志刪除位置的int型pos。

2、用gets函數輸入數組a的值,並利用for循環將數組a 到 數組b。

3、利用for循環,令pos位的數組b元素賦值到a。

三、實現代碼如下:

(10)removec語言擴展閱讀

gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加''字元。其調用格式為:gets(s),其中s為字元串變數(字元串數組名或字元串指針)。

gets()函數讀取到 (我們輸入的回車)於是停止讀取,但是它不會把 包含到字元串裡面去。然而,和它配合使用的puts函數,卻在輸出字元串的時候自動換行。

gets(s) 函數中的變數s為一字元串指針。如果為單個字元指針,編譯連接不會有錯誤,但運行後內存溢出錯誤。寬字元版本,當使用unicode寬字元文本時,使用這個函數 _getws();在C11標准中被刪除,可用C標准庫中的fgets代替.