首页 > 其他分享 >《信息安全系统设计与实现》第二周学习笔记

《信息安全系统设计与实现》第二周学习笔记

时间:2023-09-17 21:57:14浏览次数:33  
标签:文件 函数 输出 缓冲 信息安全 写入 模式 第二周 笔记

    第九章 I/O库函数 I/O库函数: printf(): 格式化输出函数,用于将数据打印到标准输出设备(通常是显示器)上。

scanf(): 格式化输入函数,用于从标准输入设备(通常是键盘)接收用户输入的数据。

putchar(): 将一个字符输出到标准输出设备。

getchar(): 从标准输入设备获取一个字符。

puts(): 将一个字符串输出到标准输出设备,并自动添加换行符。

gets(): 从标准输入设备读取一行字符串,直到遇到换行符为止。

fputs(): 将一个字符串输出到指定的文件流中。

fgets(): 从指定的文件流中读取一行字符串。

fprintf(): 格式化输出函数,将数据格式化后输出到指定的文件流中。

fscanf(): 格式化输入函数,从指定的文件流中按照指定的格式读取数据。
系统调用函数:
open(): 打开一个文件或创建一个新文件。
read(): 从文件中读取数据。
write(): 向文件中写入数据。
close(): 关闭文件。
i/o库函数的算法:
fopen(): 打开文件并返回一个文件指针。
fclose(): 关闭文件。
fseek(): 在文件中定位文件指针的位置。
fread(): 从文件中读取一块数据。
fwrite(): 将数据写入文件。
feof(): 判断是否已到达文件末尾。


实践:编写一个c程序,计算文本文件的行数:
先询问gpt该实验的代码以及实验流程:




在linux环境中实践:


a.txt中的内容:

I/O库模式:
文本模式:在文本模式下,I/O库会将文件内容看作是由文本字符组成的,对于不同操作系统之间的行尾符号进行转换,并且在每行末尾添加一个 NULL 字符表示行的结束。在默认情况下,文本模式下的文件以文本形式呈现。可以使用 fopen() 函数的 "r" 或 "w" 模式打开文件。

二进制模式:在二进制模式下,I/O库会将文件内容看作是由字节组成的,并不会对它们进行任何处理。因此,在此模式下,不能够对行尾符号进行自动转换和追加 NULL 字符。可以使用 fopen() 函数的 "rb" 或 "wb" 模式打开文件。

更新模式:更新模式是同时支持读取和写入的,需要使用 fopen() 函数的 "r+" 或 "w+" 模式打开文件。在此模式下,文件指针可以在读写操作中进行移动,并且既可以使用 fread() 函数读取文件,也可以使用 fwrite() 函数写入文件。但是,在同一时刻只能进行一个操作。
文件流缓冲:
文件流缓冲有三种类型:

全缓冲:当使用标准I/O函数处理输出流时,默认情况下会使用全缓冲模式。在全缓冲模式下,数据会等到缓冲区填满或者遇到特定条件(例如换行符 \n)时才会进行实际的写入操作。此时,才会将缓冲区的数据一次性写入磁盘。这种模式适用于大量数据的写入,可以减少实际的磁盘I/O次数,提高效率。

行缓冲:当使用标准I/O函数处理输出流时,如果输出流关联的是一个终端设备(如终端窗口),则会使用行缓冲模式。在行缓冲模式下,数据会在遇到换行符 \n 时进行实际的写入操作,并且会立即显示在终端上。这样做可以实现实时的输出显示,提高用户交互的体验。例如,使用 printf() 函数输出内容到终端时就是行缓冲模式。

无缓冲:当使用标准I/O函数处理错误流 stderr 时,默认情况下会使用无缓冲模式。在无缓冲模式下,数据会立即进行实际的写入操作,而不会进行缓冲。这样可以确保错误信息尽快地输出,而不会因为缓冲等待而导致延迟。

需要注意的是,可以使用 setvbuf() 函数来设置特定文件流的缓冲模式,包括全缓冲、行缓冲和无缓冲模式。可以根据具体的需求选择适合的缓冲模式来进行文件读写操作。
gpt苏格拉底挑战:










标签:文件,函数,输出,缓冲,信息安全,写入,模式,第二周,笔记
From: https://www.cnblogs.com/ljy12392/p/17709903.html

相关文章

  • 20211301 学习笔记2
    20211301《Unix/Linux系统编程》学习笔记1教材笔记总结学习目标本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文件中考虑字符读写,行读写,任意位置读写等文件操作......
  • 【刷题笔记】52. N-Queens II
    题目Then-queenspuzzleistheproblemofplacingnqueensonann×nchessboardsuchthatnotwoqueensattackeachother.Givenanintegern,returnthenumberofdistinctsolutionstothen-queenspuzzle.Example:Input:4Output:2Explanation:Therea......
  • 笔记 | 提高数据库操作的效率,SQL查询进阶
    SQL(StructuredQueryLanguage)是管理和检索关系数据库中数据的标准语言。本文将介绍一些SQL查询的进阶示例。1.优化基本查询选择特定字段例子:SELECTfirst_name,last_nameFROMemployees;优化效果:减少数据传输和处理时间,降低了资源开销。使用索引例子:CREATEINDEXidx_product_n......
  • 学习笔记2
    文件操作内容在C语言中,二进制文件是以数据在内存中的二进制存储形式(内码)原样保存的文件;而文本文件则是以字符的ASCII码值进行存储与编码的文件,文件的内容就是字符。文本文件和二进制文件都可以作为用户的数据文件,当写数据到磁盘时,文本文件需要把内存中的二进制形式转换成A......
  • 学习笔记(2)
    一、任务详情自学教材第九章,提交学习笔记(10分)本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文件中考虑字符读写,行读写,任意位置读写等文件操作都有什么?二进制文件和文......
  • golang项目搭建笔记-cobra
    cobra介绍GitHub地址cobra中,一个命令主要概念为command,arguement,flag,可以理解为谓语、宾语、状语格式为APPNAMECOMMANDARG--FLAG,例如:gitcloneURL--bare项目搭建cobra提供了非常方便的工具cobra-cli,可以快速添加命令,参考官方文档新建项目#进入项目目录gomodin......
  • 第九章“学习笔记”
    ------------恢复内容开始------------I/O库函数一、库函数基本内容 系统调用函数:open()、read()、write()、lseek()、close(); I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()在系统调用中,文件描述符fd是一个整数,在库I/O中,fp是一个文件流指针。fopen()发出open()系统调用用......
  • 《信息安全系统设计与实现》第二周学习笔记
    第九章I/O库函数I/O库函数与系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()I/O库函数的算法fread算法:第一次调用fread()时候,FILE结构体的缓冲区是空的,fread()使用保......
  • MySQL笔记目录
    MySQL目录本视频学习自尚硅谷的MySQL教程,原地址在这笔记源自官方提供笔记,根据自己的理解重新排版修改、并增添了一些内容初级篇第一章MySQL概述第二章MySQL环境搭建(mysql环境安装、配置、卸载、登录)第三章SQL介绍DDL数据库和表的操作第四章MySQL数据类型......
  • 信息安全系统设计与实现——学习笔记2
    任务详情:自学教材第九章,提交学习笔记Part1知识点归纳&GPT提问知识点归纳系统调用函数和I/O库函数系统调用函数是直接与操作系统交互的函数,用于进行底层的文件操作。I/O库函数则是建立在系统调用函数之上的高级函数,提供更方便和易于使用的接口来进行文件的读写操作。这些函......