c语言access函数缺陷,c语言 判断文件或文件夹是否存在access函数
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函数相关推荐
- mysql判断数字的函数_Mysql必读MySql判断汉字、日期、数字的具体函数
<Mysql必读MySql判断汉字.日期.数字的具体函数>要点: 本文介绍了Mysql必读MySql判断汉字.日期.数字的具体函数,希望对您有用.如果有疑问,可以联系我们. MYSQL学习 ...
- 国二c语言改错题答案,c语言国二考试编程题答案
<c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...
- R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如、粗体、斜体等
R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如.粗体.斜体等 目录
- C语言试题三十一之判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。
1. 题目 请编写函数function,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no.回文是指顺读和倒读都是一样的字符串. 2 .温馨提示 ...
- linux中c语言kbhit函数用法,C语言判断用户是否输入-非阻塞函数kbhit
一.基础研究 要从地址读取数据,肯定是要定义一个指针变量p,用它来实现变换地址和取值的功能.另外程序是当两个条件中的某一个出现时才停止,所以应该用while~do循环语句循环输出n和d,并用while ...
- 编写函数实现素数的判断!c语言
大家好!!!接下来为学习c语言初期的同学们介绍素数的判断 首先,我们通过自定义函数来实现素数的判断这一算法is_prime() 接下来为大家详细介绍素 #include<stdio.h> ...
- 笔记整理1----Java语言基础(一)01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法
01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法 第01天 java基础知识 今日内容介绍 Java概述.helloworld案例 工 ...
- C语言带空格的字符串输入——gets()函数、scanf()函数缺陷以及改进后的gets_s()函数、scanf_s()函数的简单用法(上)
**在C语言中,带空格的字符串输入问题相对而言还是比较"坑"的,所以呢,小编就决定要专门谈一谈这个问题,希望对于初学者能够有所帮助. 该篇主要简述了C语言中gets()函数以及sc ...
- C语言基础课 编写程序之1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数2.编写一个函数fun(),函数功能是:判断一个整数是否既是5又是7的整倍数,若是,输出yes,不是,输出n
1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数 #include<stdio.h> #include<math.h> int fun(int n) {in ...
最新文章
- 李开复:AI行业正在回归商业本质,技术公司要有服务心态落地为王 | MEET2020
- QT 32位程序Debug模式发布问题
- 关闭软盘_乔布斯签名软盘驱动器即将开拍 成交价预计达7500美元
- 初识Typescript及vscode环境配置
- 字符串:凯撒密码(洛谷P1914)
- java课外兴趣小组管理系统_课外兴趣小组活动方案
- 资源下载| 深度学习Pytoch1.0如何玩?这一门含900页ppt和代码实例的深度学习课程带你飞
- 深度学习(十五)基于级联卷积神经网络的人脸特征点定位
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(待续)
- 详细完整MySQL8.0.23安装教程
- 字符串的常用方法和常用类
- 格林尼治时间与本地时间转换
- 511遇见易语言流程控制变量循环首
- A16z、YGG、Axie 圆桌对话:Web3 游戏接下来该怎么走?
- RSA/ECDSA host key has changed 错误
- ajax上传文件:ajaxSubmit使用
- 如何脱离AirtestIDE跑Airtest自动化脚本
- 本地blast~TBtools
- JavaScript(四)
- MobaXterm的SOCKS代理连接与bitvise client 软件的C2S与S2C连接
热门文章
- 小鱼教你ubuntu远程连接ubuntu服务器建立自己的服务器账户
- three.js第五十二用 较为精确的框选思路 像素拾取大法
- 【软件构造】实验笔记(一)Lab1-Fundamental Java Programming and Testing
- Android无障碍功能优化实践,一篇有温度的文章
- 【iPhone8iPhone X】高科技技术必须学会的人脸识别术
- C语言double转long隐形bug
- 新闻稿传播才能达到更好的效果
- 关于安防设备里的系统时间同步问题
- Mat数据的深浅拷贝
- datagridview固定列宽_C# DataGridView 如何设置列宽