11-1 输入输出流

2023-11-03

1. 文件打开方式

        打开方式通常有 'r' 'w' 'a' 三种,分别代表 只读,只写,附加。三种操作加 't' 表示以文本文件形式打开,加 'b' 表示以二进制文件形式打开。什么都不加的情况下,默认打开文本文件。

        二进制文件和文本文件的区别:

        1)在 windows 系统文本文件下,文件以 "\r\n" 代表换行。若以文本模式打开文件,并用 fputs 等函数写入换行符 "\n" 时,函数会自动在 "\n" 前面加上 "\r" 。即实际写入文件的是 "\r\n" 。而二进制文件中换行等同于 "\n" 。

        2)在类 Unix/Linux 系统文本文件下,文件以 "\n" 代表换行,故 Linux 系统中在文本文件和二进制文件无区别。

        此外,末尾的 '+' 相当于添加功能。例如 r 与 r+ ,r+ 可以写入文件,而不是只读。

 2. 文件打开失败

         文件打开失败后,可以利用 perror() 函数直接打印错误信息,也可获取错误码 errno 以及 strerror() 函数对应的错误信息字符串。 

#include <stdio.h>
#include <errno.h>
#include <string.h>

void TestFileError(){

  FILE *file = fopen("CMakeLists.txt", "r");

  if(file){

    puts("Open successfully");
    fclose(file); // 文件打开后,必须关闭

  }else{
    printf("error: %d\n", errno);  // 获取错误码
    puts(strerror(errno));         // 获取错误码对应的提示信息
    perror("fopen");               // 打印自带的提示错误信息
  }
}

3. 文件打开成功

        文件打开前,需要注意程序执行的工作目录。例如打开项目中的 "CMakeLists.txt",则需要将工作目录进行如下调整:

        文件成功打开的情况下,仍然可能读取时出错,故可利用 ferror() 函数进行判断,如果返回值为 0,说明文件读取无误,否则文件读取失败。此外,判断文件是否读取结束可利用 feof() 函数(eof: end of file)。如果返回值为 0,说明文件读取没有结束,否则文件读取结束。

void TestFileError(){

  FILE *file = fopen("CMakeLists.txt", "r");

  if(file){

    puts("Open successfully");

    int err = ferror(file);   // 文件读取是否出错
    int eof = feof(file);     // 文件读取是否结束

    printf("err: %d\n", err);   // 0,说明没有出错
    printf("eof: %d\n", eof);   // 0,说明没有结束

    fclose(file); // 文件打开后,必须关闭
  }else{

    perror("fopen");          // 打印自带的提示错误信息
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

11-1 输入输出流 的相关文章

随机推荐

  • Unity & Unreal Engine的官方.gitignore

    gitignore Unity gitignore at main github gitignore gitignore UnrealEngine gitignore at main github gitignore Unity的 giti
  • nagios check_mysql uptime_nagios使用check_mysql监控mysql

    如果没有check mysql插件 需要安装Mysql数据库 1 建立专用数据库 root svr3 mysql u root p Enter password Welcome to the MySQL monitor Commands e
  • SpringMVC事务控制(xml文件配置和注解配置)

    事务的定义 事务应该具有4个属性 原子性 一致性 隔离性 持久性 这四个属性通常称为ACID特性 原子性 atomicity 一个事务是一个不可分割的工作单位 事务中包括的操作要么都做 要么都不做 一致性 consistency 事务必须是
  • python之字符串替换

    方法一 str replace old new max old 将被替换的子字符串 new 新字符串 用于替换old子字符串 max 可选字符串 替换不超过 max 次 temp str this is a test print temp
  • jquery保留一位小数_青岛版数学,4年级上册,动物世界——小数意义和性质,干货分享...

    各位家长 同学们 大家好 这里是玖振学堂学习分享课堂 今天给大家分享的内容是青岛版数学四年级上册中动物世界 小数的意义和性质这一单元的知识点 小数的意义 仿照整数的写法 写在整数的右面 用圆点隔开 用来表示十分之几 百分之几 千分之几 的数
  • 程序员开发遇见chrome浏览器访问异常 ie 火狐正常访问 快速解决办法(80以上版本chrome有重大变化)

    近期有部分程序员开发遇见的chrome80以上版本url访问异常等 针对相同操作系统 相同浏览器 相同的url所展示的异常现象 网上找了很多方法尝试js调试 后台跨域等 然而并没有什么卵用 大家也别浪费时间测试了 本人尝试过以上所有方法 结
  • 实验六—基本数据管理(三)

    实验6 基本数据管理 三 实验目的 综合应用数据框的多种操作 进行综合实验 掌握小提琴图的绘制方法 实验内容 1 计算2的1 50次方 以及1 50的平方 找出这两个序列有哪些元素是相等的 显示出来 x lt NULL y lt NULL
  • 服务器被攻击的处理方法

    一 服务器被攻击怎么办 处理步骤 1 切断网络 所有的攻击都来自于网络 因此 在得知系统正遭受黑客的攻击后 首先要做的就是断开服务器的网络连接 这样除了能切断攻击源之外 也能保护服务器所在网络的其他主机 2 查找攻击源 可以通过分析系统日志
  • 基于人工蜂群算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 信号处理 图像
  • Yarn常用命令

    Yarn常用命令 文章目录 1 yarn application 查看任务 2 yarn logs 查看日志 3 yarn applicationattempt 查看尝试运行的任务 4 yarn container查看容器 5 yarn n
  • 无线打印机服务器说明书,无线打印机服务器

    无线打印机服务器 内容精选 换一换 假定某个Flink业务每秒就会收到1个消息记录 基于某些业务要求 开发的Flink应用程序实现功能 实时输出带有前缀的消息内容 Flink样例工程的数据存储在Kafka组件中 Flink向Kafka组件发
  • 生命在于学习——业务逻辑漏洞

    声明 只是用于学习交流 笔记记录 不可用作违规用途 一 业务逻辑漏洞简介 简单理解 就是编程人员的思维逻辑不够严谨导致攻击者有机可乘的漏洞 逻辑漏洞还是一种虽然没有在owasp top10中提及到 但是往往会存在的漏洞 并且在hvv 渗透测
  • 用户和组权限管理笔记

    一 管理用户和组 Linux 是一个多用户 多任务的服务器操作系统 1 Linux用户类型 linux用户和组账户概述 用户和组 系统上的每个进程 运行的程序 都是作为特定用户运行的 每个文件都是由一个特定用户拥有 访问文件和目录受到用户的
  • 疯壳-鸿蒙OS-应用程序监听驱动程序消息

    应用程序监听驱动程序消息 疯壳 出品 在前面课程中 我们通过驱动服务基类成员IDeviceIoService中的Dispatch方法进行用户态应用程序和内核态驱动程序的消息交互 其中涉及到两个HdfSBuf data与reply data
  • python的color函数的参数_Python 函数参数

    参数 我们用函数封装了一个功能 但是希望这个功能可以在不同要求的作用下面得到不同的结果 就需要用到参数 def f color if color green print They re green elif color yellow pri
  • 字符串转换,将前端传过来的json格式的数据转化为以“#”号隔开的格式的数据(replaceAll、substring和数组)

    一 字符串转换 将前端传过来的json格式的数据转化为以 号隔开的格式的数据 需求 在题目新增时 前端传过来的四个选项是json格式的数据 后端存入数据库的格式要求将四个选项以 隔开 例如 将 A 招标人 B 投标人 C 设计单位 D 施工
  • 一篇就够!数据增强方法综述

    作者 太子长琴 整理 NewBeeNLP 数据增强 Data Augmentation DA 缓解了深度学习中数据不足的场景 在图像领域首先得到广泛使用 进而延伸到 NLP 领域 并在许多任务上取得效果 一个主要的方向是增加训练数据的多样性
  • TorchVision Transforms API 大升级,支持目标检测、实例/语义分割及视频类任务

    内容导读 TorchVision Transforms API 扩展升级 现已支持目标检测 实例及语义分割以及视频类任务 新 API 尚处于测试阶段 开发者可以试用体验 本文首发自微信公众号 PyTorch 开发者社区 TorchVisio
  • JDK8的 stream流详解-转载

    本文章 转载自头条网 只是觉得好用很详细 所以自己收集 做下笔记 不做任何商业用途 不收任何费用 不喜勿喷 本文是转载 希望不要涉及到文章版权 只是自己做笔记 这个是最重要的 致敬 头条 程序猿的内心独白 1 Stream初体验 我们先来看
  • 11-1 输入输出流

    1 文件打开方式 打开方式通常有 r w a 三种 分别代表 只读 只写 附加 三种操作加 t 表示以文本文件形式打开 加 b 表示以二进制文件形式打开 什么都不加的情况下 默认打开文本文件 二进制文件和文本文件的区别 1 在 window