C语言判断文件夹或者文件是否存在的方法

方法一:access函数判断文件夹或者文件是否存在

函数原型: int access(const char *filename, int mode);

所属头文件:io.h

filename:可以填写文件夹路径或者文件路径

mode:0 (F_OK) 只判断是否存在

2 (R_OK) 判断写入权限

4 (W_OK) 判断读取权限

6 (X_OK) 判断执行权限

用于判断文件夹是否存在的时候,mode取0,判断文件是否存在的时候,mode可以取0、2、4、6。 若存在或者具有权限,返回值为0;不存在或者无权限,返回值为-1。

错误代码

EACCESS 参数pathname 所指定的文件不符合所要求测试的权限。

EROFS 欲测试写入权限的文件存在于只读文件系统内。

EFAULT 参数pathname指针超出可存取内存空间。

EINVAL 参数mode 不正确。

ENAMETOOLONG 参数pathname太长。

ENOTDIR 参数pathname为一目录。

ENOMEM 核心内存不足

ELOOP 参数pathname有过多符号连接问题。

EIO I/O 存取错误。

特别提醒:使用access()作用户认证方面的判断要特别小心,例如在access()后再做open()的空文件可能会造成系统安全上的问题。

实例:

#include

#include

int main(void)

{

if ( !access("C://windows",0) )

puts("C://windows EXISITS!");

else

puts("C://windows DOESN'T EXISIT!");

return 0;

}

方法二:fopen函数判断文件是否存在

函数原型:FILE *fopen (char *filename, char *type);

filename:文件路径

type:打开文件的方式(有r、w、r+、w+、a、rb、wb等等)

用于判断文件是否存在可以使用 r 或者 rb ,因为使用 其它方式的话,可能会自动建立文件。 返回值为NULL(打不开)和正数(能打开)。

特别提醒:用这种方法做出的判断是不完全正确的,因为有的文件存在,但是可能不可读。

报错信息

error C4996: 'access': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _access. See online help for details.

解决方法

这个问题在VS2012之前是不会当成错误的,目前这个问题有两个解决方法:

1.添加预处理

项目->属性->配置属性->C/C+±>预处理器->预处理器定义->编辑中添加

_CRT_SECURE_NO_DEPRECATE

_CRT_NONSTDC_NO_DEPRECATE

2.更换函数

将access()函数更换为_access()函数即可

标签:文件,判断,函数,access,文件夹,pathname,mode,权限

来源: https://www.cnblogs.com/nxopen2018/p/12182137.html

c语言access函数缺陷,c语言 判断文件或文件夹是否存在access函数相关推荐

  1. mysql判断数字的函数_Mysql必读MySql判断汉字、日期、数字的具体函数

    <Mysql必读MySql判断汉字.日期.数字的具体函数>要点: 本文介绍了Mysql必读MySql判断汉字.日期.数字的具体函数,希望对您有用.如果有疑问,可以联系我们. MYSQL学习 ...

  2. 国二c语言改错题答案,c语言国二考试编程题答案

    <c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...

  3. R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如、粗体、斜体等

    R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如.粗体.斜体等 目录

  4. C语言试题三十一之判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。

    1. 题目 请编写函数function,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no.回文是指顺读和倒读都是一样的字符串. 2 .温馨提示 ...

  5. linux中c语言kbhit函数用法,C语言判断用户是否输入-非阻塞函数kbhit

    一.基础研究 要从地址读取数据,肯定是要定义一个指针变量p,用它来实现变换地址和取值的功能.另外程序是当两个条件中的某一个出现时才停止,所以应该用while~do循环语句循环输出n和d,并用while ...

  6. 编写函数实现素数的判断!c语言

    大家好!!!接下来为学习c语言初期的同学们介绍素数的判断 首先,我们通过自定义函数来实现素数的判断这一算法is_prime() 接下来为大家详细介绍素 #include<stdio.h> ...

  7. 笔记整理1----Java语言基础(一)01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法

    01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法 第01天 java基础知识 今日内容介绍  Java概述.helloworld案例  工 ...

  8. C语言带空格的字符串输入——gets()函数、scanf()函数缺陷以及改进后的gets_s()函数、scanf_s()函数的简单用法(上)

    **在C语言中,带空格的字符串输入问题相对而言还是比较"坑"的,所以呢,小编就决定要专门谈一谈这个问题,希望对于初学者能够有所帮助. 该篇主要简述了C语言中gets()函数以及sc ...

  9. C语言基础课 编写程序之1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数2.编写一个函数fun(),函数功能是:判断一个整数是否既是5又是7的整倍数,若是,输出yes,不是,输出n

    1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数 #include<stdio.h> #include<math.h> int fun(int n) {in ...

最新文章

  1. 李开复:AI行业正在回归商业本质,技术公司要有服务心态落地为王 | MEET2020
  2. QT 32位程序Debug模式发布问题
  3. 关闭软盘_乔布斯签名软盘驱动器即将开拍 成交价预计达7500美元
  4. 初识Typescript及vscode环境配置
  5. 字符串:凯撒密码(洛谷P1914)
  6. java课外兴趣小组管理系统_课外兴趣小组活动方案
  7. 资源下载| 深度学习Pytoch1.0如何玩?这一门含900页ppt和代码实例的深度学习课程带你飞
  8. 深度学习(十五)基于级联卷积神经网络的人脸特征点定位
  9. 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(待续)
  10. 详细完整MySQL8.0.23安装教程
  11. 字符串的常用方法和常用类
  12. 格林尼治时间与本地时间转换
  13. 511遇见易语言流程控制变量循环首
  14. A16z、YGG、Axie 圆桌对话:Web3 游戏接下来该怎么走?
  15. RSA/ECDSA host key has changed 错误
  16. ajax上传文件:ajaxSubmit使用
  17. 如何脱离AirtestIDE跑Airtest自动化脚本
  18. 本地blast~TBtools
  19. JavaScript(四)
  20. MobaXterm的SOCKS代理连接与bitvise client 软件的C2S与S2C连接

热门文章

  1. 小鱼教你ubuntu远程连接ubuntu服务器建立自己的服务器账户
  2. three.js第五十二用 较为精确的框选思路 像素拾取大法
  3. 【软件构造】实验笔记(一)Lab1-Fundamental Java Programming and Testing
  4. Android无障碍功能优化实践,一篇有温度的文章
  5. 【iPhone8iPhone X】高科技技术必须学会的人脸识别术
  6. C语言double转long隐形bug
  7. 新闻稿传播才能达到更好的效果
  8. 关于安防设备里的系统时间同步问题
  9. Mat数据的深浅拷贝
  10. datagridview固定列宽_C# DataGridView 如何设置列宽