首页 > 其他分享 >信息安全系统设计与实现学习笔记2

信息安全系统设计与实现学习笔记2

时间:2023-09-17 18:22:23浏览次数:33  
标签:文件 fread 信息安全 笔记 学习 调用 FILE Line 库函数

学习笔记 2
知识点总结

  1. 文件操作
    文件操作涵盖了对文件的添加、删除、修改、打开、关闭等基本操作。

  2. 二进制文件和文本文件的转换
    二进制转文本文件需要构建二进制转十六进制函数,按照每八位一组,每四位一单元进行转换。
    反过来,文本文件转二进制文件需要构建十六进制转二进制函数。

  3. 数据结构的读写
    可以通过fprintf()和fscanf()实现格式化的写入和读取。

  4. I/O库函数
    系统调用是文件操作的基础,但它们只支持数据块的读/写,不支持行、字符、结构化文件等逻辑单元的读/写。
    I/O库函数是对系统调用的封装,提供了一系列方便使用且高效的文件操作函数。
    系统调用函数:
    open()
    read()
    write()
    lseek()
    close()
    I/O库函数:
    fopen()
    fread()
    fwrite()
    fseek()
    fclose()
    每个I/O库函数的根都在对应的系统调用函数中,例如fopen()依赖于open,fread()依赖于read。

区别:
系统调用中,使用文件描述符(fd),打开失败返回1;每次迭代用read()调用读入buf[]再读到文件描述符中。
库I/O程序中,使用文件流指针(fp),失败返回NULL,否则返回FILE结构体地址,FILE结构体包含char fbuf[BLKSIZE]和整数fd字段。
I/O库函数的算法:
fread()发出read()系统调用来填充内部缓冲区。
fwrite()与fread()相似,只是数据传输方向不同。写满内部缓冲区后发出write()系统调用,将整个缓冲区写入操作系统内核。
fclose():如果以写的方式被打开,会先关闭文件流的局部缓冲区。然后发出close(fd)系统调用来关闭FILE结构体中的文件描述符。最后会释放FILE结构体,并将FILE指针重置为NULL。
5. I/O库模式
fopen中的模式 "r"、"w"、"a" 分别代表读、写、追加。
"r+"读/写,不会截断文件。
"w+"读/写,但会先截断文件;文件不存在会创建文件。
"a+"通过追加进行读/写;如果文件不存在,会创建文件。
6. 不同的I/O模式
字符模式I/O:fgetc()、ungetc()、fputc()
行模式I/O:char *fgets()、int fputs()
格式化I/O:fscanf()、fprintf()
7. 内存中的转换函数
sscanf()、sprintf()
8. 其他I/O库函数
fseek()、ftell()、rewind():更改文件流中的读/写字节位置。
feof()、ferr()、fileno():测试文件流状态。
fdopen():用文件描述符打开文件流。
freopen():以新名称重新打开现有的流。
setbuf()、setvbuf():设置缓冲方案。
popen():创建管道,复刻子进程来调用shell。
9. 限制混合fread-fwrite
规范要求每对fread()和fwrite()之间至少有一个fseek()或ftell()。

  1. 文件流缓冲
    无缓冲 _IONBF 文件流 stderr
    行缓冲 _IOLBUF 文件流 stdout
    全缓冲 _IOFBUF 文件流 正常缓冲方案
    最有收获的内容
    对“宏”的理解:宏是一种预处理指令,可以用来替换源代码中的字符串。在条件编译中,可以方便程序员在调试程序的过程中执行一些在程序发布后不需要执行的指令。

宏函数的优点:避免了函数调用的时间和空间代价,提高了程序的效率。宏函数在预编译时会将定义的代码段嵌入到当前程序,不会产生函数调用,省去了保留现场和恢复现场的时间,但会占用额外的存储空间。

解决问题的思路
在学习过程中遇到问题,可以通过查阅资料、阅读相关文档或者询问他人来解决。同时,也可以尝试编写简单的示例代码来验证理解,从而深入理解知识点。

实践内容
以下是我完成的实践内容:

  1. 将文本中的小写字母转换为大写字母
    原文本:

sql
Copy code
This is a test file.
It contains some lowercase letters.
运行后新文本:

sql
Copy code
THIS IS A TEST FILE.
IT CONTAINS SOME LOWERCASE LETTERS.
2. 在每行末尾标记行数
原文本:

arduino
Copy code
Line 1: This is the first line.
Line 2: This is the second line.
Line 3: This is the third line.
运行后新文本:

csharp
Copy code
Line 1: This is the first line.[1]
Line 2: This is the

标签:文件,fread,信息安全,笔记,学习,调用,FILE,Line,库函数
From: https://www.cnblogs.com/gd1220/p/17709392.html

相关文章

  • 20211312徐元琦学习笔记2
    第9章I/O库函数——教材知识点归纳9.1~9.2系统调用和I/O库函数系统调用:操作系统中,进程以两种不同的方式运行:内核模式(Kmode)和用户模式(Umode)。Umode权限有限,特殊权限的操作需要在Kmode下进行。系统调用(SystemCall)机制允许进程进入Kmode,执行更高权限的操作。系统调用和I/O......
  • CentOS8部署NextCloud+onlyoffice笔记
    通过宝塔一键部署一、安装宝塔yuminstall-ywget&&wget-Oinstall.shhttp://download.bt.cn/install/install_6.0.sh&&shinstall.sh二、从宝塔Docker快速部署安装NextCloud。一键部署,按照向导逐步安装三、安装onlyoffice应用1、安装onlyoffice文档服务器......
  • 《信息安全系统设计与实现》第二周学习笔记
    教材知识点总结第九章I/O库函数I/O库函数与系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()可见每个库函数的根都在对应系统调用函数中I/O库函数的算法fread算法第一次调用fread()时,FILE结构......
  • 学习笔记2 代码
    静态库测试代码gccsrc/hello.c-c-Iinclude-obin/hello.ocdbinarrcsvlibhello.ahello.ocd..mvbin/libhello.alibgccsrc/main.c-Iinclude-Llib-lhello-obin/hello动态库测试代码gcc-fPIC-sharedsrc/hello.c-Iinclude-olib/libhello.soexportLD_L......
  • Vue学习六:路由进阶
    一、路由的封装抽离目标:将路由模块抽离出来。好处:拆分模块,易于维护。第一步:在src目录下新建一个router目录,在创建一个index.js文件,将先前main.js中的路由代码转移到index.js文件中。(这里需要使用到vue所以需将vue包导入;需修改组件路径,@符号代表绝对路径src;需将路由实例导出)index......
  • Linux学习之CentOS(二十七)--Linux磁盘管理:LVM逻辑卷的拉伸及缩减
    您可以通过点击右下角的按钮来对文章内容作出评价,也可以通过左下方的关注按钮来关注我的博客的最新动态。如果文章内容对您有帮助,不要忘记点击右下角的推荐按钮来支持一下哦如果您对文章内容有任何疑问,可以通过评论或发邮件的方式联系我:[email protected]......
  • 《信息安全系统设计与实现》第二周学习笔记
    I/O库函数方便用户使用,提高文件操作整体效率的一系列文件操作函数。I/O库函数与系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()I/O库函数的算法fread在第一次调用fread()时,FILE结构体的缓冲区是空的,fread()使用保存的文件......
  • Unix/Linux系统编程学习笔记第九章
    《信息安全系统设计与实现》第二周学习笔记第九章I/O库函数I/O库函数与系统调用每个I/O库函数的根都在对应的系统调用函数中系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()I/O库函数的算法fread算法:(1)第一......
  • Qemu源码分析(5)—Apple的学习笔记
    一,前言前言本节主要看线程什么时候创建的及创建的线程有什么作用。二,源码分析第一次进入断点仅主线程4215.root@ubuntu:/home/applecai#ps-T-p4215PIDSPIDTTYTIMECMD42154215pts/800:00:00qemu-system-gnu通过搜索文件名pthread关键字,然后找到qemu-thread-posix.c......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第二周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第二周学习笔记 一、任务要求自学教材第九章,提交学习笔记(10分)本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文......