errno_t open_s()打开文件出现的错误分析

=========================

编译环境:VS2015

=========================

在vs2015环境下使用fopen方式打开文件会报错,大概内容是不安全(unsafe)。网上的解决办法主要分为两种:第一种是改配置环境:https://jingyan.baidu.com/article/ce436649fd61543773afd32e.html百度经验上提供的方法。但是经过尝试,发现这个方法并没有对我的项目产生影响。所以采用第二种方案,也是微软推荐使用的方式:使用fopen_s方式。至于该方式的写法:参考http://blog.sina.com.cn/s/blog_15f359e0b0102wds7.html。


然而我并不是完全按照那个方式来的。

我先定义了一个const类型的变量diskName。然后就直接使用fopen_s。


运行发现不对。errno_t变量err的值是13,这个错误类型表示获取数据不对。

经过多次探索,发现:


fopen_s()函数中,filename最后生成的是const char*类型。所以自己定义的const方式也好,define的也好,在这里都是不正确的。找不到文件。所以不要不要不要在文件名前使用const。

注:fopen_s函数中的三个参数,指的是最后这个函数生成的类型形式(比如说第二个参数:意思是执行完这个函数,最后生成的文件名是const char*类型的),而不是我们要写入的类型(比如第二个参数:并不是说我们要在第二个参数的位置写一个const char*类型的变量)。此外,有的函数有很多参数,但是不需要每个都写。

总结:使用errno_t fopen_s方式打开文件时,文件名不要使用const,直接用char filename[]就好了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

allein_STR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值