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代替.