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

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

时间:2023-09-17 13:55:45浏览次数:51  
标签:fp 文件 fread int 信息安全 笔记 char 第二周 FILE

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

第九章 I/O库函数

系统调用函数

  • 系统调用
    • 系统调用函数
      • open():打开和创建文件
      • read():读文件
      • write():写文件
      • lseek()
      • close()
    • I/O库函数
      • fopen():以指定的形式打开文件
      • fread():从给定流 stream 读取数据到 ptr 所指向的数组中
      • fwrite():把 ptr 所指向的数组中的数据写入到给定流 stream 中
      • fseek():
      • fclose():关闭流 stream,刷新所有的缓冲区
  • I/O库函数的算法
    • fread算法:
      • 第一次调用fread()时候,FILE结构体的缓冲区是空的,fread()使用保存的文件描述符fd发出一个n =read(fd, fbuffer, BLKSIZE);
      • 在随后的每次fread()的调用中,它都尝试满足来自FILE结构体内部缓冲区的调用
      • 与fread相似,但数据传输方向不同
    • fclose算法:
      • 若以写的方式打开文件,fclose会先关闭文件流的局部缓冲区。然后发出一个close(fd)系统调用来关闭FILE结构体中的文件描述符。最后,释放FILE结构体,并将FILE指针重置为NULL
  • I/O库模式
    • fopen()
      • r:读
      • w: 写
      • a:追加
      • r+:读/写,不会截断文件
      • w+:读/写,会先截断文件;如果文件不存在,会创建文件
      • a+:通过追加进行读/写;如果文件不存在,会创建文件
    • 字符模式I/O
      • int fgetc(FILE *fp);
        该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
      • int ungetc(int c, FILE *fp);
        如果成功,则返回被推入的字符,否则返回 EOF,且流 stream 保持不变。
      • int fputc(int c, FILE *fp);
        如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。
    • 大小写转换实践:


    • 行模式I/O
      • char *fgets(char *buf, int size, FILE *fp);:从fp中读取最多的为一行(以\n结尾)的字符
      • int fputs(char *buf,FILE *fp);:将buf的一行写入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
    • 限制混合fread-fwrite
      • 当某文件同时进行读、写操作时,会限制混合使用fread()和fwrite(),注意两者之间至少有一个fseek()或者ftell()
  • 文件流缓冲
    • 无缓冲:从非缓冲流中写入或读取的字符将尽快单独传输到文件或从文件中传输
    • 行缓冲:遇到换行符时,写入行缓冲流的字符以块的形式传输
    • 全缓冲:写入全缓冲流或从中读取的字符以块大小传输到文件或从文件传输。这是文件流的正常缓冲方案。
  • 变参函数
    • 多种类型的可变数量参数都可以调用它

苏格拉底挑战:














标签:fp,文件,fread,int,信息安全,笔记,char,第二周,FILE
From: https://www.cnblogs.com/gfynb/p/17708659.html

相关文章

  • 《Unix/linux系统编程》教材第9章学习笔记
    结构化教材内容第9章:I/O库函数I/O库函数与系统调用系统调用是文件操作的基础,但它们只支持数据块的读/写。系统调用函数:open()、read()、write()、lseek()、close();I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose();I/O库函数的根都在对应的系统调用函数中,例fopen()......
  • yzy第二次学习笔记
    第九章I/O库函数本章讨论了I/O库函数;结识了I/O库函数的作用及其对于系统调用的优势;使用示例程序来说明I/O库函数和系统调用之间的关系,并解释了他们之间的相似性和基本区别;详细介绍了IO库函数的算法,包括fread、fwrite和fclose的算法,重点介绍了它们与read、write和close系统调......
  • Unix/Linux系统编程学习笔记二
    学习笔记二一、教材知识点总结1.I/O库函数程序(1)fopen()使用字符串表示模式,其中"r"表示READ"w"表示WRITE。它返回一个指向FILE结构体的指针。fopen()首先发出open()系统调用来打开文件,以获取文件描述符编号fd。如果open0系统调用失败,则fopen()会返回一个NULL指针。否则,它会......
  • 学习笔记2
    对于C语言中的文件操作:字符读写:getc:从文件中读取一个字符。putc:将一个字符写入文件。行读写:fgets:从文件中读取一行文本。fputs:将一行文本写入文件。getline:动态地读取一行文本。任意位置读写:fseek:定位文件指针到指定位置。ftell:获取当前文件指针的位置。rew......
  • 《深入LINUX内核架构》学习笔记 ——01
    模块相关的知识1.模块相较于宏内核(微内核优点)模块消除了宏内核的许多限制,包括:缺乏动态可拓展性、导致内核映像尺寸膨胀、测试新特性时必须重启系统等。2.静态链接、动态链接及模块依赖(TIPS)《深入理解计算机系统》中有这样一段话:共享库是一个目标模块,在运行或加......
  • 第九章学习笔记
    Unix/Linux系统编程学习笔记第九章知识点归纳以及最有收获的内容I/O库函数知识点总结1.文件操作open()函数:用于打开文件,可以指定文件名、模式(读取、写入、追加等)以及编码。文件模式(mode):包括读取模式('r')、写入模式('w')、追加模式('a')、二进制模式('b')等。close()函数:用于关......
  • 第一周阅读笔记|人月神话
    阅读了前两章一个软件的实现,不仅仅是代码的完成,只是程序的完成还远远不够,更多的需要程序变成编程产品,这是可以被任何人运行、测试、修复和扩展的程序,它可以运行在多种操作系统平台上;同时程序还要变成编程系统,可以进行交互,并可以用来组装和搭建整个系统。最后成为编程系统产品,才是......
  • 学习笔记2
    ##I/O库函数-系统调用是文件操作的基础,但是它们只支持数据块的读/写。**I/O库函数和系统调用**-在Unix/Linux中,I/O库函数建立在系统调用的基础上。-相互关系系统调用函数:open()、read()、write()、lseek()、close();I/O库函数:fopen()、fread()、fwrit......
  • 梅科尔工作室-IoT-南向开发第五次培训笔记
    ADCAPI分析unsignedintIoTAdcRead(unsignedintchannel,unsignedshort*data,IotAdcEquModelSelequModel,IotAdcCurBaiscurBais,unsignedshortrstCnt);参数说明channel:表示ADC通道data:表示指向存储读取数据的地址的指针equModel:表示平均算法的次数......
  • openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据
    openGauss学习笔记-71openGauss数据库管理-创建和管理普通表-删除表中数据在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配......