1.一个实例

例子选自谭浩强老师的《C语言程序设计(第四版)》(其实我觉得叫做C语言入门更贴切)

#include<stdio.h>
#include<stdlib.h>
int main()
{FILE *fp;errno_t err;                                    //不同点1char ch, filename[10];printf("请输入所用的文件名:");scanf_s("%s", filename,10);if ((err = fopen_s(&fp, filename, "w")) !=0)    //不同点2{printf("无法打开此文件\n");            //如果打不开,就输出打不开exit(0);                               //终止程序}ch = getchar();                            //用来接收最后输入的回车符printf("请输入一个准备存储到磁盘的字符串(以#结束):");ch = getchar();                            //用来接收从键盘输入的第一个字符while (ch != '#')                          //当输入“#”时结束循环{fputc(ch, fp);                         //向磁盘输出一个字符putchar(ch);                           //将输出的字符显示在屏幕上ch = getchar();                        //再接收从键盘输入的一个字符}fclose(fp);                                //关闭文件putchar(10);                               //向屏幕输出一个换行符return 0;
} 

2.分析

fopen_s函数声明如下:
errno_t fopen_s(
FILE** pFile,
const char *filename,
const char *mode
);

fopen函数的返回值是一个指向文件的指针,而fopen_s函数的返回值则不同,正确返回0,不正确返回非0。
要定义一个变量来接收fopen_s函数的返回值,即errno_t err; 其中errno_t是int的别名,typedef int errno_t;即err是个整型值,用来接收fopen_s函数的返回值。通过判断err的值是否为0,可以知道打开数据文件成功与否,这是不同点1。
判断打开成功与否fopen_s用(err = fopen_s(&fp, filename, “w”)) !=0,因为它的返回值是整型,而fopen判断打开成功与否,用fp = fopen(filename, “w”)) ==NULL因为它的返回值是指针,打开失败返回空指针NULL,这是不同点2。
FILE *fp;定义fp是一个指向FILE类型数据的指针变量,&p就是一个指向FILE类型数据的指针变量的地址,也就是一个<指向FILE类型数据的指针变量>的指针变量。有点绕,其实只要记住,先如FILE *fp;定义一个指向FILE类型数据的指针变量,在fopen_s的参数,在定义的指针变量前加&即可。

用函数fopen_s打开数据文件相关推荐

  1. vs2008/2010安装无法打开数据文件解决方案

    本人在安装VS2008或2010时,在开始的第一个页面(进度条大约加载到75%左右),提示"无法打开数据文件 'C:/Documents and Settings/Administrator ...

  2. MATLAB笔记:打开数据文件的三种方法+读取数据文件的两种方法+保存数据文件的两种方法

    1.打开数据文件 1.1 直接打开文件 PATHNAME = 'C:\Users\s55\Desktop\dat'; FILENAME = '\data_1.dat'; str0=strcat(PAT ...

  3. load函数无法打开MAT文件:不是二进制 MAT 文件。请尝试执行 load -ASCII 以便以文本形式读取。

    load函数无法打开MAT文件 问题描述 报错:不是二进制 MAT 文件.请尝试执行 load -ASCII 以便以文本形式读取. 原因分析: Matlab2021a及以下版本用load函数读取MAT ...

  4. php fopen创建文件,php fopen函数用法(打开创建文件)

    php教程 fopen函数用法(打开创建文件) 在很多时间我们都需要创建文件特别是生成静态页面的时间,我们在php中就常常会用到fopen这个函数来新建文件,它的原是是如何文件存在就追加,不存在可以创 ...

  5. php fopen函数php,php fopen函数用法(打开创建文件)_PHP教程 - fopen

    php教程 fopen函数用法(打开创建文件) 在很多时间我们都需要创建文件特别是生成静态页面的时间,我们在php中就常常会用到fopen这个函数来新建文件,它的原是是如何文件存在就追加,不存在可以创 ...

  6. Postman高级应用——流程控制、调试、公共函数、外部数据文件

    postman客户端下载地址:https://www.getpostman.com/apps 流程控制 流程控制简言之就是设置接口的执行顺序,流程控制只有在collection runner或Newm ...

  7. python调用文件对象所提供的读取数据的函数_python读写数据文件

    1. read.readline.readlines (1)open函数 如果你想用python读取文件(如txt.csv等),第一步要用open函数打开文件. open()是python的内置函数, ...

  8. 利用dbms_backup_restore函数来恢复数据文件

    本实验对数据文件丢失,控制文件丢失,但是RMAN的备份信息和备份日志存在的时候使用. 控制文件的丢失恢复参看http://luoping.blog.51cto.com/534596/294164. 下 ...

  9. 安装VS2010 无法打开数据文件'C:\Users\Administrator\AppData\Local\Temp\SIT12124.tmp\deffactory.dat的解决方法...

    今天用win7安装vs2010时候 出现: 解决方法:进入这个文件路劲:C:\Users\Administrator\AppData\Local\Temp\SIT12124.tmp 用记事本打开 'd ...

最新文章

  1. BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40
  2. 浅谈三个星期零基础入门学习Thinkphp5开发restful-api接口的心得和总结
  3. CodeForces - 1408E Avoid Rainbow Cycles(思维+最大生成树)
  4. 再获绿色等级5A称号!揭开腾讯数据中心节能环保黑科技
  5. (Docker实战) 第五篇:建立持续集成环境02
  6. 操作系统 —— 课程概述
  7. ToDictionary
  8. N 层应用程序中的数据检索和 CUD 操作 (LINQ to SQL)
  9. 3月27日外电头条:Windows的开源野心
  10. python接口自动化(十)--post请求四种传送正文方式(详解)
  11. 17011301(UE4的AnimDynamic)
  12. Android课程---Android Studio使用小技巧:提取方法代码片段
  13. 人人都想自学python_人人都想自学Python,为什么坚持下来的没几个?
  14. JDBC学习总结4-------简化DAO的写法
  15. Fiddler2 http抓包和https抓包
  16. Sprintf函数用法
  17. 外卖霸王餐返利小程序开发制作功能介绍
  18. JavaScript/js 转 Python 代码转换神器 jiphy
  19. STM32F4 ETR计数
  20. Qt高质量的开源项目合集

热门文章

  1. C++ 并发编程(四):基于 Asio 的线程池
  2. 互联网思维之求职信,百战百胜
  3. NSUserDefault 的使用
  4. 屏幕编程 F4的帮组用法
  5. 15年IT研发老兵的困惑,生存与生活的状态
  6. hdu 1598(最小生成树变形)
  7. input标签加disabled属性后无法获得其value值
  8. CSU 1081集训队分组(搜索)
  9. 校园表白墙APP使用体验
  10. Ubuntu16.04怎样安装Python3.6