C语言判断一个文件是否存在,以及如何删除

#include <iostream>
#include <fstream>
using namespace std;
#define FILENAME "stat.dat"
int main()
{
      fstream _file;
      _file.open(FILENAME,ios::in);
      if(!_file)
      {
          cout<<FILENAME<<"没有被创建";
       }
       else
       {
           cout<<FILENAME<<"已经存在";
       }
       return 0;
}



另外一种利用 c 语言的库的办法:

函数名: access
功   能: 确定文件的访问权限
用   法: int access(const char *filename, int amode);
程序例:
#include <stdio.h>
#include <io.h>

int file_exists(char *filename);

int main(void)
{
   printf("Does NOTEXIST.FIL exist: %s\n",
   file_exists("NOTEXISTS.FIL") ? "YES" : "NO");
   return 0;
}

int file_exists(char *filename)
{
   return (access(filename, 0) == 0);
}

access(filename, 0)0 表示判断文件是否存在

finename 文件名称                                       mode 模式,共5种模式:                                 

0-检查文件是否存在         

1-检查文件是否可运行        

2-检查文件是否可写访问    

4-检查文件是否可读访问     

6-检查文件是否可读/写访问

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 函数名:   unlink    
  功   能:   删掉一个文件    
  用   法:   int   unlink(char   *filename);    
  程序例:     
    
  头文件为,dos.h   io.h   stdio.h都可以

  #include    
   
  int   main(void)    
  {    
  FILE   *fp   =   fopen("junk.jnk","w");    
  int   status;    
   
  fprintf(fp,"junk");    
   
  status   =   access("junk.jnk",0);    
  if   (status   ==   0)    
  printf("File   exists\n");    
  else    
  printf("File   doesn't   exist\n");    
   
  fclose(fp);    
  unlink("junk.jnk");    
  status   =   access("junk.jnk",0);    
  if   (status   ==   0)    
  printf("File   exists\n");    
  else    
  printf("File   doesn't   exist\n");    
   
   
  return   0;    
  }    
------------------------------------------------------------------------------------------------------------------

#include   <stdio.h>  
   
  int   remove(const   char   *fname);  
  函数remove删除以fname串为名字的文件。删除成功返回0,否则返回非0。  
   
  int   main(int   argc,   char   *argv[])  
  {  
        if(remove(argv[1]))  
                  printf("Remove   Error");  
        return   0;  
  }

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用C语言的`fopen`函数来判断文件是否存在。如果文件存在,`fopen`会返回文件指针;如果文件存在,则返回`NULL`。 下面是一个示例函数: ```C #include <stdio.h> int file_exist(const char* filename) { FILE* file = fopen(filename, "r"); if (file) { fclose(file); return 1; } return 0; } ``` 使用方法: ```C if (file_exist("test.txt")) { printf("The file test.txt exists.\n"); } else { printf("The file test.txt does not exist.\n"); } ``` 需要注意的是,此函数只能判断文件是否存在,并不能判断是否有权限读取文件。 ### 回答2: 要用C语言一个判断文件是否存在的函数,可以使用标准库中的<sys/stat.h>头文件中的`stat()`函数。下面是一个示例函数的实现: ```c #include <stdio.h> #include <sys/stat.h> int isFileExists(const char* filename) { struct stat buffer; return (stat(filename, &buffer) == 0); } ``` 这个函数的参数是文件名的字符串,返回值是一个整数,如果文件存在则返回1,否则返回0。该函数使用`stat()`函数来获取文件状态,并将结果存储在`buffer`结构体中。如果`stat()`函数返回零,则表示文件存在,函数返回1;否则,文件存在,函数返回0。 要使用这个函数,可以调用它,并传入要判断文件名作为参数。例如: ```c int main() { const char* filename = "example.txt"; if(isFileExists(filename)) { printf("%s exists.\n", filename); } else { printf("%s does not exist.\n", filename); } return 0; } ``` 在这个示例中,函数`isFileExists()`将检查是否存在名为"example.txt"的文件,并根据结果打印相应的信息。 ### 回答3: 以下是用C语言一个判断文件是否存在的函数的示例: ```c #include <stdio.h> int fileExists(char* filename) { FILE* file = fopen(filename, "r"); if (file == NULL) { return 0; // 文件存在 } else { fclose(file); return 1; // 文件存在 } } int main() { char* filename = "example.txt"; if (fileExists(filename)) { printf("文件存在\n"); } else { printf("文件存在\n"); } return 0; } ``` 这个函数接受一个文件名作为参数,并尝试以只读模式打开该文件。如果成功打开文件,函数会关闭文件并返回1,表示文件存在。如果打开文件失败,函数会返回0,表示文件存在。 在主函数中,我们将一个示例文件名传递给fileExists函数,并根据返回值打印出相应的结果。 请注意,这只是一个简单的示例函数,对于一些特殊情况(例如文件存在或者无法打开文件),可能需要进行更详细的错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值