信息安全系统设计与实现(上)作业二
一、苏格拉底挑战
二、学习笔记
-
I/O库函数:
- I/O库函数是编程语言提供的高级接口,用于处理输入和输出操作。
- 这些函数提供了更友好、更抽象的方法来进行I/O操作,通常不需要直接操作底层系统。
-
系统调用:
- 系统调用是操作系统提供的底层接口,用于执行实际的I/O操作。
- I/O库函数通常会将请求转发给适当的系统调用来执行实际的I/O操作,例如读取文件或从网络套接字发送数据。
-
示例:
- 在C语言中,
printf
是I/O库函数,它使用底层的系统调用来进行标准输出操作。
- 在C语言中,
I/O库模式
-
字符模式I/O:
- 字符模式I/O逐字符处理输入和输出,通常使用
getchar
和putchar
进行字符的读取和写入。 - 这种模式适用于简单的文本数据处理。
- 字符模式I/O逐字符处理输入和输出,通常使用
-
行模式I/O:
- 行模式I/O逐行处理输入和输出,通常使用
gets
和puts
进行整行的读取和写入。 - 这种模式适用于文本文件的逐行操作,例如读取日志文件。
- 行模式I/O逐行处理输入和输出,通常使用
-
格式化I/O:
- 格式化I/O允许指定数据的格式,通常使用
printf
和scanf
来进行输入和输出。 - 这种模式支持更复杂的数据处理,例如数字格式化、精度控制等。
- 格式化I/O允许指定数据的格式,通常使用
-
内存中的转换函数:
- 内存中的转换函数(如
sprintf
和sscanf
)用于将数据从内存中的字符串进行输入和输出。 - 这对于处理字符串数据,如构建动态SQL查询或解析配置文件,非常有用。
- 内存中的转换函数(如
文件缓冲流
-
缓冲流:
- 缓冲流是I/O库的机制,用于提高性能。
- 数据在内存缓冲区中临时存储,以减少频繁的磁盘或网络访问,从而提高效率。
-
标准缓冲 vs 行缓冲 vs 无缓冲:
- 标准缓冲模式下,数据在满足一定条件(例如缓冲区满、换行符出现)时才写入文件。
- 行缓冲模式下,数据在每次输出操作后立即写入文件,通常用于标准输出。
- 无缓冲模式下,数据立即写入文件,没有缓冲,适用于特殊情况。
变参函数
-
变参函数:
- 变参函数是可以接受不定数量参数的函数。
- I/O库函数中的典型例子是
printf
,它可以接受不同数量和类型的参数,根据格式字符串进行格式化输出。
-
格式字符串:
- 变参函数通常使用格式字符串来指定参数的数量和类型。
- 格式字符串包含特殊的格式占位符(如
%s
、%d
),用于描述参数的输出格式,确保正确的匹配和输出。
三、程序模拟