文件Io编程基础

news2024/9/23 21:21:01

1. 标准I/O (stdio.h)

  • stdio.h 是标准C库的头文件,包含了输入输出函数的声明。
  • 位置:/usr/include/stdio.h

2. 文件I/O操作步骤

  1. 打开文件: 使用 fopen 函数,返回 FILE* 指针。
  2. 读/写操作: 使用 freadfwritefgetsfputsfprintffscanf 等函数进行文件读写操作。
  3. 关闭文件: 使用 fclose 函数关闭文件,释放资源。

3. 错误处理

  • fopen 返回 NULL 表示打开文件失败。
  • 检查文件操作状态:
    • feof(FILE *stream): 检查文件是否到达末尾。
    • ferror(FILE *stream): 检查文件操作是否发生错误。

4. 标准输入输出和错误流

  • stdin: 标准输入流
  • stdout: 标准输出流
  • stderr: 标准错误输出流

fopen:

FILE *fp = fopen("file.txt", "r");
if (fp == NULL) {
    perror("Error opening file");
    return -1;
}

 fgetsfputs

char buffer[100];
fgets(buffer, 100, fp); // 从文件中读取一行
fputs(buffer, stdout); // 将读取的内容输出到标准输出

fclose

fclose(fp); // 关闭文件

 

内存操作

  • memset: 用于将内存块的某一段设置为指定的值
    memset(buffer, 0, sizeof(buffer)); // 将buffer中的所有字节设置为0
    

    工具和文件操作

  • vim diff: 文本对比工具
  • stat: 查看文件的详细信息

 

打开文件

在C语言中,使用 fopen() 函数打开文件。该函数的原型为:

FILE *fopen(const char *filename, const char *mode);
  • 参数

    • filename:文件名或路径。
    • mode:文件打开模式(如 "r", "w", "a", "rb", "wb" 等)。
  • 常用模式

    • "r":以只读模式打开文件。文件必须存在。
    • "w":以写入模式打开文件。如果文件存在,其内容将被清空;如果文件不存在,将创建一个新文件。
    • "a":以追加模式打开文件。文件指针将定位到文件末尾。
    • "r+":以读写模式打开文件。文件必须存在。
    • "w+":以读写模式打开文件。如果文件存在,其内容将被清空;如果文件不存在,将创建一个新文件。
    • "a+":以读写模式打开文件。文件指针将定位到文件末尾。
      FILE *file = fopen("example.txt", "w");
      if (file == NULL) {
          perror("Error opening file");
          return 1;
      }
      
      关闭文件

      使用 fclose() 函数关闭文件。函数原型为:

      int fclose(FILE *stream);
      

      返回值:成功返回 0,失败返回 EOF。

 读取文件
  • fgetc():读取下一个字符。返回值为字符或 EOF

    int c = fgetc(file);
    

  • fgets():读取一行字符(最多读取 n-1 个字符),包括换行符。返回值为字符串指针或 NULL

    char buffer[100];
    if (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }
    

  • fread():读取二进制数据。函数原型为:

    size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
    
    • 参数
      • ptr:指向存储读取数据的内存地址。
      • size:每个数据项的大小。
      • count:要读取的数据项数目。
      • stream:文件流指针。
    • 示例
      size_t bytesRead = fread(buffer, 1, sizeof(buffer), file);
      

写入文件
  • fputc():写入一个字符。返回值为字符或 EOF

    fputc('A', file);
    

  • fputs():写入字符串。返回值为非负值(成功)或 EOF(失败)。

    fputs("Hello, World!", file);
    

  • fwrite():写入二进制数据。函数原型为:

    size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
    
    
    • 参数
      • ptr:指向要写入的数据的内存地址。
      • size:每个数据项的大小。
      • count:要写入的数据项数目。
      • stream:文件流指针。
    • 示例
       
size_t bytesWritten = fwrite(buffer, 1, sizeof(buffer), file);

笔记详解 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1982059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SOC】SoC架构系统总线的QoS管理——QoS generator

#工具文档理解# QoS——Quality of Service 目录 一、概念 Master对于Latency的敏感性 流量控制和事务级概念 Splitting Pending order IDs 数据包创建和传输的QoS 序列化 一、概念 这一部分描述了QoS机制如何平衡不同发起者的流量访问,以适应互连的有限可…

都2024年了,SQL语句还需要手写吗?

前言 在当今的AI时代,数据库管理和SQL开发已不再是单调的编码过程。借助AI的智能化工具,数据库操作变得更加简洁高效,错误率也大大降低。特别是当AI与强大的数据库管理工具Navicat相结合时,开发者可以更加专注于数据的分析和应用…

home assistant 接入国家电网

一、安装加载项 在 配置 - 加载项 File editorAdvanced SSH & Web Terminal 二、安装state_grid 上传压缩包 在 File editor中,进入 homeassistant - custom_components 文件夹中,点击上传文件。 文件下载路径 https://download.csdn.net/downl…

密码学基础-身份认证

密码学基础-身份认证 概述 书信的亲笔签名;公文、证书的印章起到了核准、认证的功能。 如前文密码学基础-数据加密所述,信息安全少不了身份认证的话题。只有认证了信息的来源,我们才能知道这条信息是否是正确的,合法的&#xff…

如何让贵人一直帮你?

如果有贵人提携了你一把,牢记一定要抱住大腿。 如果一个段位比你高很多的贵人帮了你一个忙,他什么都不缺,他缺的也不是你这个层次的人能够给的了的,但你千万不要以为这个事儿就翻篇儿了。牢记一招,每隔半年给他汇报一下…

超声波眼镜清洗机有用吗?品质上等的超声波清洗机评选

超声波眼镜清洗机有用吗?眼镜是我们日常生活中不可或缺的配件,其卫生状况对健康至关重要。由于眼镜经常与外界环境接触,容易积聚细菌。为了有效解决这一问题,大家都纷纷选择使用超声波清洗机来进行彻底清洁。所以,超声…

C语言基础知识点(十三)结构体的深拷贝与浅拷贝

在C或C等语言中,结构体(Struct)是一种用户自定义的数据类型,它允许将不同类型的数据项组合成一个单一的类型。对于结构体的拷贝,存在深拷贝(Deep Copy)和浅拷贝(Shallow Copy&#x…

DataWhale市场博弈和价格预测

文章目录 市场博弈和价格预测任务数据出清价格的形成步骤代码运行 Task1:跑通baseline使用ABM估计市场出清价格转换耗煤量为机组报价保存结果为submit.csv Task2:时间序列挖掘ABM构建学习数据基本信息统计指标分析数据分布分时统计特征不同小时的总负荷和…

错误代码0x80004005:全面解析与解决策略

在Windows操作系统中,错误代码0x80004005是一个相当常见的提示,它通常表示一个未指定的错误或一个无法找到的错误。这个错误可能出现在多种场景中,包括软件安装、系统更新、网络连接、文件操作等。由于其普遍性和模糊性,理解和解决…

搭建链路追踪系统 Jaeger

搭建链路追踪系统 Jaeger 架构 架构图 架构设计 在设计以 Jaeger 为中心的链路追踪系统时,我们采用微服务架构模式。 Jaeger 作为核心追踪系统,负责收集、存储和展示分布式追踪数据。Elasticsearch 作为后端存储,提供数据的持久化和高效…

网鼎杯之unfinish

题目来源:网鼎杯 2018 题目描述:SQL 问题:给一个页面,如何判断其有漏洞 通过awvs扫描得知存在 register.php 注册页面,并且注册界面存在SQL盲注漏洞。 题目提示SQL,在注册页面测试无果,且发现输…

解决Ubuntu报“无法解析域名cn.archive.ubuntu.com“问题

今天在Ubuntu系统上,使用sudo apt update命令,进行更新时,弹出"无法解析域名 cn.archive.ubuntu.com"问题,如图(1)所示: 图(1) 弹出"无法解析域名 cn.archive.ubuntu.com" 错误 出现这种现象的原因…

C++并发编程(一):线程基础

简介 本文学习的是 b 站 up 恋恋风辰的并发编程教学视频做的一些笔记补充。 教程视频链接如下:线程基础:视频教程 文档链接如下:线程基础:笔记文档 理论上直接看 up 提供的笔记文档即可,我这里主要是记录一些我自己…

免费qq号码估价的工具和软件

目前有多种 qq 号码估价的工具和软件。例如,晒号网的 QQ 估价器可以根据 QQ 号码等级、QQ 号码资深度、QQ 号码年限、活跃时间等进行准确的 QQ 号码估价。此外,还有其他一些相关的估价软件和平台,如 QQ 号码估价 2.0 全新玩法,利用…

复现opendrivelab的“点云预测”项目

本文的主要工作就是复现下述论文中的算法。 该论文全称:Visual Point Cloud Forecasting 论文内容在此不做过多介绍,直接上项目。 一、准备工作 首先通读readme.md文件的内容,了解所需要的相关依赖和数据等内容。 一定要多读几遍&#xf…

C# udp通信测试助手

1、UI界面和最终实现功能测试 2、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threa…

【C++BFS算法】2998. 使 X 和 Y 相等的最少操作次数

本文涉及知识点 CBFS算法 LeetCode2998. 使 X 和 Y 相等的最少操作次数 给你两个正整数 x 和 y 。 一次操作中,你可以执行以下四种操作之一: 如果 x 是 11 的倍数,将 x 除以 11 。 如果 x 是 5 的倍数,将 x 除以 5 。 将 x 减 …

Linux项目实战——业务系统(后附百问网课程视频链接)

处理配置文件 一、main函数流程 初始化显示系统——>初始化输入系统——>初始化文字系统——>初始化页面系统——>业务系统 二、业务系统框架 1. 读取配置文件 2. 根据配置文件生成按钮、界面 3. 读取输入事件 4. 根据输入事件找到按钮 5. 调用按键的OnPressed函…

小程序开发怎么申请HTTPS证书?

小程序开发中申请SSL证书的流程包括选择信任可靠的SSL证书服务商、申请SSL证书、配置服务器、测试验证以等。以下将具体分析这个过程: 1、选择信任可靠的SSL证书服务商: 选择信任可靠的证书服务商,致命的证书服务商可以提供可靠的产品和完善…

【已解决】页面操作系统功能,诡异报错500nginx错误

【已解决】页面操作系统功能,诡异报错500nginx错误,后台没有任何报错信息 不知道啥原因 清理了浏览器缓存 也没有效果 还有一个表现情况,同样的操作,有时可以又是不行 因为报错ng的代理问题,检查了ng配置 后续经过同…