首页 > 其他分享 >2023-2024-1 20211306 密码系统设计与实现课程学习笔记2

2023-2024-1 20211306 密码系统设计与实现课程学习笔记2

时间:2023-09-17 22:25:38浏览次数:34  
标签:文件 调用 FILE 字符 2024 20211306 file 2023 库函数

20211306 密码系统设计与实现课程学习笔记2

学习任务详情

自学教材第九章,提交学习笔记

  1. 本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。
    文本文件中考虑字符读写,行读写,任意位置读写等
    文件操作都有什么?
    二进制文件和文本文件如何转换?
    数据结构如何读写?
    ...
  2. 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分)

“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
核心是要求GPT:“请你以苏格拉底的方式对我进行提问”
然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”
GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。

  1. 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)
  2. 实践过程截图,代码链接(2分)
  3. 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)

一、第九章(I/O库函数)学习总结

  • I/O库函数是一系列文件操作函数,系统调用是文件操作的基础,但他们只支持数据块的读/写。

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

在Unix/Linux中,I/O库函数建立在系统调用的基础上

  • 系统调用函数:open()、read()、write()、lseek()、close();
  • I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()。

左侧是系统调用程序,右侧是I/O库函数的类似程序

  • 左侧的fd是一个整数,右侧的fp是一个文件流指针
  • 左侧open()打开或读取文件,返回的是整数描述符,右侧fopen()返回的是FILE结构体指针
  • 左侧用while读写文件,将字符装入buf[],而右侧用fgetc(fp)从文件流中获取字符,通过putchar()输出字符。
  • I/O库函数算法

+fread算法

系统调用,将数据复制到程序的缓冲区,更新缓冲区的指针和计数器等

在每次进行fread()调用时,它都尝试满足来自FILE结构体内部缓冲区的调用,一方面接受用户程序的调用,一方面像操作系统内核发出read()系统调用。他只在需要时才会进入操作系统内核,并且以一种最高效匹配文件的方式进入。

  • fwrite算法

与fread()算法相似,只是传输方向不同,它将数据写进内部缓冲区。

  • fclose算法

若文件以写的方式被打开,fclose()会先关闭文件流的局部缓冲区,会发出close(fd)系统调用关闭FILE结构体的文件描述符,最后释放FILE结构体。

+I/O库模式

fopen()中的模式参数可指定为:“r”、“w”、“a”,代表读、写、追加。
在每个模式字符串后可加一个"+",分别表示:读/写,不会截断文件;读/写,但会先截断文件,如果文件不存在会创建文件;通过追加进行读/写,如果文件不存在,会创建文件

+字符模式

fget()返回的是整数,而不是字符

  • 行模式I/O
  • 格式化I/O
  • 其他I/O库函数

  • 文件缓冲流

每个文件流都有一个FILE结构体,其中包含一个内部缓冲区,文件流可以使用三种缓冲方案的一种

  • 无缓冲:从非缓冲流中写入或读取的字符单独传播到文件或从文件中传输。
  • 行缓冲:遇到换行符时,写入行缓冲流的字符以块的形式传输。
  • 全缓冲:写入全缓冲流或从中读取的字符以块大小传输到文件或从文件传输。
  • 实际操作

先是创建文件并写入

点击查看代码
#include <stdio.h>

int main() {

    FILE *file = fopen("io.txt", "w");
    /*写入模式*/
    if (file == NULL) {
        perror("打开文件失败");
        return 1;
    }

    
    fprintf(file, "Hello world!\n");
    fprintf(file, "你好 世界 欢迎来学习I/O\n");
    /*写入数据到文件*/
    printf("已写入");
    fclose(file); /*关闭文件*/

    return 0;
}


其实这里的“w”可能用“w+”更好一些,因为“w+”代表文件不存在则创建文件,但是实际使用的时候,先用“w”也能创造出来文件

询问了gpt,他的回答如上图

然后是读取

点击查看代码
#include <stdio.h>
int main() {
 
    FILE *file = fopen("io.txt", "r");
	/*读取文件*/ 
    if (file == NULL) {
        perror("打开文件失败");
        return 1;
    }
    char buf[100]; 
    while (fgets(buf, sizeof(buf), file) != NULL) 
	{
        printf("%s", buf);
    }
	/*打印出文件内容*/ 
    fclose(file);
    return 0;
}

然后是追加内容

二、苏格拉底提问GPT












三、linux代码运行

  • 生成动态库

  • gdb调试

输入fs cmd可进入文本框中

输入list可以将代码全部打印

输入 b空格“数字”可以设置断点

输入r可以跑代码跑到断点,输入n可进行逐步运行


标签:文件,调用,FILE,字符,2024,20211306,file,2023,库函数
From: https://www.cnblogs.com/20211306dwb/p/17708823.html

相关文章

  • 2023.37 AI辅助医疗诊断
    日常生活看病,有一个难题就是不知道自己要去那个科室,以之前自己去医院看牙齿疼为例,各种搜索确认后才知道要挂口腔内科,中间还有点其它问题医生建议看其它科室,不过最终还算顺利。牙疼尚且如此,更不用说其它罕见病,比如下面链接中的故事。4岁男孩得了罕见病,母亲找了17位专家无果,受自己......
  • 2023.9.17——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午做任务,下午做任务。我了解到的知识点:1.完成任务环境配置;明日计划:1.上课;2.继续完成我的任务;......
  • 2023 CSP-J详解
    csp崩了,滚来写题解,悄悄话,我服了今年这么简单我竟然崩了(蒟蒻石锤)话不多,来吧上题目原谅我上来就用四级标题一.T1.1.在C++中,下面那个关键字用于声明一个变量,其值不能被修改?()A.unsignedB.constC.staticD.mutable这个题不用我多说吧,有点常识就知道A.无符号性B.定义......
  • 【愚公系列】2023年09月 WPF控件专题 ListView控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • 2023年icpc网络赛第一场七题代码
    A模拟题首先跑一遍,得到校排名然后对两个比赛的校排名进行合并即可#include<bits/stdc++.h>usingnamespacestd;intn,m;map<string,int>o;strings[10010];vector<string>a,b;intmain(){cin>>n>>m;for(inti=1;i<=n;i++){cin>&......
  • 2023年9月17日
    HTML<!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title>2023年9月17日</title> </head> <body> 数据区:<spanid="sp"title="helloworld">您好,欢迎你使用JavaScript</sp......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第二周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第二周学习笔记 一、任务要求自学教材第九章,提交学习笔记(10分)本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记2(必做)
    学习笔记2C语言文件操作内容知识点总结运用ChatGPT进行苏格拉底挑战,发现问题与解决思路实践过程截图C语言文件操作内容知识点总结C语言文件基础操作字符读写、行读写、任意位置读写数据结构读写结构化从文本文件操作二进制文件与文本文件转换C语言文件基础操作1.......
  • 2023 JavaScript想进 BAT 的必须要面对的面试题
    2023JavaScript面试题以及答案在本文中,您将学习面试中最常见的JavaScript面试问题和答案。在继续学习JavaScript面试问题和答案之前,我们首先学习完整的JavaScript教程。JavaScript(JS)是使用最广泛的轻量级脚本和编译编程语言,具有一流的功能,由BrendenEich于1995年开发。众所周......
  • 2023.9.17日报
    今天了解了软考的相关内容,值得一提的是,软考的上午题中有很多没有学过的内容例如计算机组成原理和操作系统,另外自己的数据结构和计算机网络也有所遗忘因此需要往回捡捡,今天了解了一些cpu的知识点,还有一些编码的内容必须要记住的是,给出一个区间,例如用32kX8bit的芯片要用多少片......