首页 > 其他分享 >学习笔记二

学习笔记二

时间:2023-09-14 22:58:20浏览次数:28  
标签:文件 读取 函数 缓冲 写入 笔记 学习 库函数

一、笔记
(一)I/O库函数
I/O库函数是在C和C++编程中广泛使用的文件操作函数,用于进行输入和输出操作。它们是构建在系统调用之上的高级接口,提供了更方便和高效的文件操作方法。
(二)I/O库函数与系统调用
I/O库函数与系统调用密切相关,它们封装了底层的系统调用,提供了更高级别、更易用的接口。下面是一些常见的I/O库函数与对应的系统调用:
打开和关闭文件:
fopen / open:打开文件
fclose / close:关闭文件
读写文件:
fread / read:从文件读取数据
fwrite / write:向文件写入数据
(三)I/O库函数的算法
fread/fwrite函数:
fread函数用于从文件中读取指定数量的数据
fwrite函数用于将指定数量的数据写入文件
(四)I/O模式库
C语言提供了字符模式I/O函数,用于以字符为单位进行文件操作,除了二进制模式的I/O。这些函数包括:

  • fgetc(FILE *fp):从文件中读取一个字符并返回其ASCII码值。通常,EOF(文件结束符)用于表示文件的末尾。
  • ungetc(int c, FILE *fp):将之前通过fgetc()获取的字符重新放回流中,以便之后再次读取。
  • fputc(int c, FILE *fp):将字符写入文件中。
    这些函数主要用于文本文件的读取和写入操作,而不是二进制数据。此外,还有其他一些有用的I/O库函数,包括:
  • fseek()、ftell()、rewind():用于更改文件流中的读/写字节位置和获取当前位置,以及将文件指针重置为文件的开头。
  • feof()、ferror()、fileno():用于测试文件流的状态,检查文件是否到达末尾或发生错误,以及获取文件描述符。
  • fdopen():用于使用文件描述符打开文件流。
  • freopen():以新名称重新打开现有的流。
  • setbuf()、setvbuf():用于设置文件流的缓冲方案。
  • popen():用于创建管道,复刻子进程来调用shell。
    (五)文件流缓冲
  • 全缓冲(Fully Buffered):当缓冲区被填满时,数据才会被写入文件或从文件中读取。可以使用setvbuf()函数将文件流设置为全缓冲模式。
  • 行缓冲(Line Buffered):当遇到换行符时,或者缓冲区被填满时,数据会被写入文件或从文件中读取。可以使用setvbuf()函数将文件流设置为行缓冲模式。
  • 无缓冲(Unbuffered):每次进行文件读写操作时,数据会立即被写入文件或从文件中读取,不使用缓冲区。可以使用setvbuf()函数将文件流设置为无缓冲模式。
    二、苏格拉底挑战





    三、实践
    (1)使用文件函数将文档1内容复制到文档2
    代码


    文件一内容

    操作后文件二内容

    (2)将小写字母改成大写字母
    代码

    操作后文件二内容

四、问题
在输入命令行当中,发现运行不了编译好的C语言文件
寻求GPT帮助

最后发现是退出插入模式时输入的是:q!强制退出没有保存原文件

标签:文件,读取,函数,缓冲,写入,笔记,学习,库函数
From: https://www.cnblogs.com/AbenbenA/p/17701416.html

相关文章

  • Python学习笔记-Python文件操作
    文件的编码简介计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?使用编码技术(密码本)将内容翻译成0和1存入。编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。计算机中有许多可用编码:UTF-8GBKBig5等不同的编码,将......
  • pytorch(1) 学习资料
    https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter03_DL-basics/3.1_linear-regression  https://pytorch.zhangxiann.com/1-ji-ben-gai-nian/1.2-tensor-zhang-liang-jie-shao  https://datawhalechina.github.io/thorough-pytorch/%E7%AC%AC%E4%B8%83%E7%AB%A0/7......
  • openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据
    openGauss学习笔记-69openGauss数据库管理-创建和管理普通表-更新表中数据修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新某个字段,而其他字段则不受影响。使用UPDATE命令更新现有行,需要提供以下三种信息:表的名称......
  • Java学习_009_for循环
    循环结构:组成:1.初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候是什么样子;2.条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能够一直执行下去;3.循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情;4.条件控制语句:用于表示循......
  • MFAN论文阅读笔记(待复现)
    论文标题:MFAN:Multi-modalFeature-enhancedAttentionNetworksforRumorDetection论文作者:JiaqiZheng,XiZhang,SanchuanGuo,QuanWang,WenyuZang,YongdongZhang论文来源:IJCAI2022代码来源:Code介绍一系列基于深度神经网络融合文本和视觉特征以产生多模态后表......
  • Java学习_007_Switch语句
    需求:输入一到七的任意一个数,输出该数字对应的星期数。使用Switch语句:1importjava.util.Scanner;23publicclassMain{4publicstaticvoidmain(String[]args){5Scannersc=newScanner(System.in);6System.out.println("请输入一......
  • SQL的学习 01
    受朋友邀请发第一篇博文,加入51CTO!我是一个初学者,最近在接触SQL,本篇浅记自己的学习。当你准备进入数据库世界,学习SQL(StructuredQueryLanguage)是一个非常重要的第一步。SQL是用于管理和操作关系型数据库的标准语言,无论你是想成为一名数据分析师、数据库管理员还是开发人员,都需要掌......
  • 萌新学习c语言记录
    好久没发博客了,因为大学开学了我看到我们学校社团的题目求两个数的最大公约数和最小公倍数感觉不怎么难在上课的时候闲的无聊写下来了。......
  • 高数学习建议
    学习这件事情,从来都是每个人有每个人的方法,每个人有适合于每个人的方式,仁者见仁、智者见者。1、必须要做题,必须要多做题,必须要经常做题!重要的事情说三遍。笔者始终认为,数学只靠做题是不行的,但是学数学不做题肯定更不行!因此学习高数,必须要做多做题。尤其是在不定积分、隐函数求导、......
  • Java学习_006_考试奖励
    需求:小明期末考试,小明的爸爸对他说,会根据他不同的期末考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。     奖励:95-100-----山地自行车一辆;  90-94------游乐场游玩一次;80-89----......