首页 > 其他分享 >20211316郭佳昊 《信息安全系统设计与实现(上)》 第二周学习笔记

20211316郭佳昊 《信息安全系统设计与实现(上)》 第二周学习笔记

时间:2023-09-17 21:58:44浏览次数:62  
标签:fp 文件 调用 信息安全 写入 20211316 郭佳昊 FILE 缓冲区

一、任务要求

[ 1 ] 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分)
我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题

核心是要求GPT:请你以苏格拉底的方式对我进行提问

然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:你的理解(回答)是什么?

如果你觉得差不多了,可以先问问GPT:针对我XXX知识点,我理解了吗?

GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:我的回答结束了,请对我的回答进行评价总结,让它帮你总结一下。

[ 2 ] 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)

[ 3 ] 实践过程截图,代码链接(2分)

[ 4 ] 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)

二、知识归纳

  1. I/O库函数与系统调用
  • 系统调用函数

open ( ) :打开一个文件进行读取,并返回一个整数文件描述符fd,打开失败则返回-1.
read ( ) :逐字符或字节读取文件中的内容,并写入buf。
write ( ) :接受fd、buf和要写入的字节数作为参数,将buf中指定数量的字节写入文件中。
lseek ( ) :在已打开的文件中移动文件指针,可以用该函数控制文件的读写位置。
close ( ) :关闭open函数打开的文件。

  • I/O库函数

fopen ( ) :打开文件,若成功返回一个FILE结构体指针,失败返回NULL。
fread ( ) : 读取数据
fwrite ( ) :写入文件
fseek ( ) :重定位流上的文件指针,成功则返回0,否则返回其他数
fclose ( ) :关闭文件

  1. I/库函数的算法
  • fread算法

1、第一次调用时,FILE结构体内的缓冲区为空,fread使用保存的文件描述符fd发出系统调用(n = read (fd, fbuffer ,BLKSIZE)),用数据块填充内部的fbuf【】,初始化fbuf【】的指针、计数器、状态变量;
将数据复制到程序缓冲区,若北部缓冲区数据不够,则再发出一个read()来填充内部缓冲区,并将数据继续复制到程序缓冲区 ;
更新内部缓冲区的指针、计数器等,为下一个fread()请求做好准备,并返回实际读取数据数量;
2、在随后每次调用中,都尝试满足来自FILE结构体内部缓冲区的调用,当缓冲区为空时,发出read系统调用重新填充内部缓冲区。

  • fwrite算法

与fread相似,每次调用时,将数据写入内部缓冲区,调整缓冲区的指针、计数器、状态变量,缓冲区满后,再次发出write系统调用,将缓冲区写入操作系统内核。

  • fclose算法

文件以写的方式被打开,flose()会先关闭文件流的局部缓冲区,然后发出close(fd)系统调用来关闭FILE结构体中的文件描述符,释放FILE结构体,并将其指针置为NULL。

  1. I/O库模式

“r”:打开一个用于读取的文件,且该文件必须存在。
“w”:创建一个用于写入的空文件。
“a”:追加到一个文件,若文件不存在,则创建该文件。
每个模式字符串可包含一个“+”,表示同时读写,或者在写入、追加情况下,如果文件不存在则创建文件。

  • 字符模式I/O

int fgetc(FILE *fp);
int ungetc(int c, FILE *fp);
int fputc(int c, FILE *fp);
因为fgetc()在文件结束时返回文件结束符-1,因此该函数返回整数而非字符

  • 行模式I/O

char *fgets(char *buf, int size,FILE *fp);
int fputs(char *buf,FILE *fp);

  • 格式化I/O

输入:

scanf(char *FMT, &items);
fscanf(fp, char *FMT, &items);

输出:

printf(char *FMT, items);
fprintf(fp, char *FMT, items);

  • 内存中的转换函数

sscanf(buf, FMT, &items);
sprintf(buf, FMT, &items);

  • 其他I/O库函数

fseek()、ftell()、rewind():更改文件流中的读/写字节位置
feof()、ferr()、fileno():测试文件流状态
fdopen():用文件描述符打开文件流
freopen():以新名称重新打开现有的流
setbuf()、setvbuf():设置缓冲方案
popen():创建管道,复刻子进程来调用sh

  1. 文件流缓冲
  • 无缓冲:从非缓冲流中写入或读取的字符将尽快单独传输到文件或从文件中传输

  • 行缓冲:遇到换行符时,写入行缓冲流的字符以块的形式传输

  • 全缓冲:写入全缓冲流或从中读取的字符以块大小传输到文件或从文件传输

三、苏格拉底挑战

总结

四、实践过程

  • gdb调试

  • 动态库打包

标签:fp,文件,调用,信息安全,写入,20211316,郭佳昊,FILE,缓冲区
From: https://www.cnblogs.com/GJH6/p/17709896.html

相关文章

  • 《信息安全系统设计与实现》第二周学习笔记
      第九章I/O库函数I/O库函数:printf():格式化输出函数,用于将数据打印到标准输出设备(通常是显示器)上。scanf():格式化输入函数,用于从标准输入设备(通常是键盘)接收用户输入的数据。putchar():将一个字符输出到标准输出设备。getchar():从标准输入设备获取一个字符。put......
  • 《信息安全系统设计与实现》第二周学习笔记
    第九章I/O库函数I/O库函数与系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()I/O库函数的算法fread算法:第一次调用fread()时候,FILE结构体的缓冲区是空的,fread()使用保......
  • 信息安全系统设计与实现——学习笔记2
    任务详情:自学教材第九章,提交学习笔记Part1知识点归纳&GPT提问知识点归纳系统调用函数和I/O库函数系统调用函数是直接与操作系统交互的函数,用于进行底层的文件操作。I/O库函数则是建立在系统调用函数之上的高级函数,提供更方便和易于使用的接口来进行文件的读写操作。这些函......
  • 信息安全系统设计与实现学习笔记2
    学习笔记2知识点总结文件操作文件操作涵盖了对文件的添加、删除、修改、打开、关闭等基本操作。二进制文件和文本文件的转换二进制转文本文件需要构建二进制转十六进制函数,按照每八位一组,每四位一单元进行转换。反过来,文本文件转二进制文件需要构建十六进制转二进制函......
  • 《信息安全系统设计与实现》第二周学习笔记
    教材知识点总结第九章I/O库函数I/O库函数与系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()可见每个库函数的根都在对应系统调用函数中I/O库函数的算法fread算法第一次调用fread()时,FILE结构......
  • 《信息安全系统设计与实现》第二周学习笔记
    I/O库函数方便用户使用,提高文件操作整体效率的一系列文件操作函数。I/O库函数与系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()I/O库函数的算法fread在第一次调用fread()时,FILE结构体的缓冲区是空的,fread()使用保存的文件......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第二周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第二周学习笔记 一、任务要求自学教材第九章,提交学习笔记(10分)本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记2(必做)
    学习笔记2C语言文件操作内容知识点总结运用ChatGPT进行苏格拉底挑战,发现问题与解决思路实践过程截图C语言文件操作内容知识点总结C语言文件基础操作字符读写、行读写、任意位置读写数据结构读写结构化从文本文件操作二进制文件与文本文件转换C语言文件基础操作1.......
  • 《信息安全系统设计与实现》第二周学习笔记
    《信息安全系统设计与实现》第二周学习笔记第九章I/O库函数系统调用函数系统调用系统调用函数open():打开和创建文件read():读文件write():写文件lseek()close()I/O库函数fopen():以指定的形式打开文件fread():从给定流stream读取数据到ptr所指向的数组中fwrit......
  • 《信息安全系统设计与实现》第二周学习笔记
    《信息安全系统设计与实现》第二周学习笔记第九章I/O库函数系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()I/O库函数的算法fread算法:第一次调用fread()时候,FILE结构体的缓冲区时空的,fread(......