说明:

VS2010中使用fopen,是没有问题的。使用VS2015时由于VS的高版本对文件操作的安全性有了较高的要求,所以会出现如下情况:

fopen用法: 

fp = fopen(filename,"w")。//返回值: fopen打开文件成功,返回文件指针(赋值给fp),打开失败则返回NULL值;

fopen_s用法:

errno_t err;
err = fopen_s(&fp,filename,"w")//fopen_s打开文件成功返回0,失败返回非0的错误代码。 

 探讨比较 :

1.fopen_s的安全是在于闭函数fopen多了溢出检测; 
2.在使用上,函数fopen的返回值是文件指针,如果返回的文件指针为NULL时,则表示打开文件失败。而函数fopen_s的返回值是相应的错误代码,通过查看错误代码代表的含义,有助于排查问题。 
3.fopen_s打开的文件不能共享,如果你打开的文件需要共享的话,不能使用fopen_s函数。可以考虑_fopen,_wfsopen这两个函数。

 参数解释:

文件访问
模式字符串
含义 解释 若文件已存在的动作 若文件不存在的动作
"r" 打开文件以读取 从头读 打开失败
"w" 创建文件以写入 销毁内容 创建新文件
"a" 后附 后附到文件 写到结尾 创建新文件
"r+" 读扩展 打开文件以读/写 从头读 错误
"w+" 写扩展 创建文件以读/写 销毁内容 创建新文件
"a+" 后附扩展 打开文件以读/写 写到结尾 创建新文件

例子:

errno_t err;
string strFile = "D:\\A.txt";
FILE *fp = NULL;
err = fopen_s(&fp, strFile.c_str(), "w");
fprintf(fp, "AA=%s", strB.c_str());
fclose(fp);

【C++】fopen与fopen_s的更多相关文章

  1. fopen和fopen_s用法的比较

    open和fopen_s用法的比较 fopen 和 fopen_s           fopen用法: fp = fopen(filename,"w").         fop ...

  2. fopen和fopen_s用法的比较 【zz】

    在定义FILE * fp 之后,fopen的用法是: fp = fopen(filename,"w").而对于fopen_s来说,还得定义另外一个变量errno_t err,然后e ...

  3. unix fopen和fopen_s用法的比较

    在定义FILE * fp 之后,fopen的用法是: fp = fopen(filename,"w").而对于fopen_s来说,还得定义另外一个变量errno_t err,然后e ...

  4. fopen和fopen_s的区别

    转载:https://blog.csdn.net/keith_bb/article/details/50063075 fopen: 原型:FILE * fopen(const char * path, ...

  5. 不用第三方解码库取得图片宽高 附完整C++算法实现代码

    在特定的应用场景下,有时候我们只是想获取图片的宽高, 但不想通过解码图片才取得这个信息. 预先知道图片的宽高信息,进而提速图片加载,预处理等相关操作以提升体验. 在stackoverflow有一篇相关 ...

  6. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  7. error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead解决方案

    vs2012使用c语言函数fopen操作文件时报错: 错误 1 error C4996: 'fopen': This function or variable may be unsafe. Consi ...

  8. cfile fopen fopen_s win10下打开文件失败

    vc程序在win10下面使用fopen 打开文件失败,在网上查 了下是因为UAC权限的问题如下: 由于windows vista win7 win8 win 10 添加了UAC权限,所以会导致 在系统 ...

  9. vs2015解决fopen、fscanf 要求替换为fopen_s、fscanf_s的办法

    在工程项目设置一下就行:项目属性 -- C/C++-- 预处理器 -- 预处理器定义,添加:_CRT_SECURE_NO_WARNINGS

随机推荐

  1. android手势识别

    一.简单手势识别: 简单手势识别分为以下几个步骤: 1.手指触碰屏幕时,触发MotionEvent事件: 2.该事件被OnTouchListener监听,可在它的onTouch()方法中获得该Moti ...

  2. Spring随堂笔记

    Spring 1.IoC控制反转 IoC特点不用new 就可以初始化类: 控制反转的英文名叫 Ioc(Inversion of Control) ,依赖注入英文名叫DI(Dependency Inje ...

  3. PHP编程实现多维数组按照某个键值排序的方法

    1.array_multisort()函数对多个数组或多维数组进行排序. //对数组$hotcat按照count键值大小降序进行排序: $hotcat =array(  array('1501'=&g ...

  4. Spring Cloud Alibaba(8)---Feign服务调用

    Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...

  5. Java版的扫雷游戏源码

    package com.xz.sl; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; i ...

  6. 用fread和fwrite实现文件复制操作

    #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc,char ...

  7. Alpha事后分析

    设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件的功能主要是让一些基于表单识别的项目(如微软智能表单识别项目)减少在数据生成方面上浪费的 ...

  8. css背景|列表样式

    背景样式 背景区包含内容.padding 和 boder 不包含外边距 background-color 设置元素的背景颜色 background-image 把图像设置为背景,包含内边距和边框,不包 ...

  9. [bug] CDH报错:cloudera-scm-server dead but pid file exists

    参考 https://blog.csdn.net/levy_cui/article/details/51243335

  10. [bug] Maven [WARNING] 'parent.relativePath' of POM

    参考 https://blog.csdn.net/simajinxiu/article/details/86667894