首页 > 其他分享 >学习笔记2

学习笔记2

时间:2023-09-17 22:48:39浏览次数:43  
标签:文件 二进制 读写 写入 笔记 学习 文本文件 目录

目录

知识点归纳

  • 系统调用函数:open()、read()、write()、lseek()、close()
  • I/O库函数:fopen()、fread()、fwrite()、flseek()、fclose()
    每个I/O库函数的根都在对应的系统调用函数中
系统调用函数 I/O库函数 作用
open() fopen() 打开文件
read() fread() 读文件
write() fwrite() 写文件
lseek() fseek() 移动文件指针
close() fclose() 关闭文件

重点核心

fwrite()算法与fread()算法相似,只是数据传输方向不同。最开始,FILE结构体的内缓冲区是空的。在每次调用fwrite()时,它将数据写入内部缓冲区,并调整缓冲区的指针、计数器和状态变量,以跟踪缓冲区中的字节数。 如果缓冲区已满,则发出write()系统调用,将整个缓冲区写入操作系统内核。

I/O库模式
fopen()中的模式参数可以指定为:"r"、"w"、"a",分别代表读、写、追加。每个模式字符串可包含一个+号,表示同时读写,或者在写入、追加情况下,如果文件不存在则创建文件。

函数 功能
fseek()、ftell()、rewind() 更改文件流中的读/写字节位置。
feof()、ferr()、fileno() 测试文件流状态。
fdopen() 用文件描述符打开文件流。
freopen() 以新名称重新打开现有的流。
setbuf()、 setvbuf() 设置缓冲方案。
popen() 创建管道,复刻子进程来调用sh。
  • 文本文件操作
    文本文件是以文本形式存储的文件,通常包含可读的字符数据。文本文件操作主要涉及字符读写、行读写和任意位置读写。

  • 字符读写: 你可以使用标准库函数 fgetc() 和 fputc() 来逐字符读写文本文件。例如,你可以使用 fgetc() 读取文件中的字符,使用 fputc() 写入字符到文件。

  • 行读写: 行读写通常涉及逐行处理文本文件。你可以使用 fgets() 函数来逐行读取文件的内容,或者使用 fprintf() 函数将文本写入文件。可以使用 fputs() 将字符串写入文件中。

  • 任意位置读写: 若要在文本文件的任意位置读写,你可以使用 fseek() 函数设置文件指针的位置,然后使用 fread() 和 fwrite() 来读取或写入数据。

二进制文件操作

二进制文件是以二进制形式存储的文件,可以包含任意数据,包括非文本数据(如图像、音频等)。二进制文件操作主要涉及二进制数据的读写。

  • 二进制数据的读写: 你可以使用 fread() 和 fwrite() 函数来读取和写入二进制数据。这些函数以字节为单位进行操作,因此非常适合处理二进制数据。

  • 文件操作的基本流程
    通常,你需要按照以下步骤执行文件操作:

  • 打开文件:使用 fopen() 函数打开文件,指定文件名和打开模式(读取、写入、追加等)。

  • 执行文件操作:根据需求使用不同的读写函数进行操作,如 fread()、fwrite()、fgets()、fprintf() 等。

  • 关闭文件:使用 fclose() 函数关闭文件,释放资源。

文本文件和二进制文件的转换

文本文件和二进制文件之间可以相互转换,但要注意转换可能导致数据格式的损失。

  • 文本文件转二进制文件: 你可以逐行读取文本文件的内容,然后将其以二进制形式写入到二进制文件中,但要确保数据的正确转换。

  • 二进制文件转文本文件: 对于二进制文件,你可以按照需要将其读取为字节流,然后将字节转换为字符,并将字符写入文本文件中。

数据结构的读写

读写数据结构通常涉及将数据结构的内容转换为二进制数据,然后写入到二进制文件,或者从二进制文件中读取二进制数据并还原为数据结构。

  • 结构体的读写: 你可以使用 fwrite() 函数将结构体的内容写入二进制文件,然后使用 fread() 函数从二进制文件中读取数据并还原为结构体。

  • 数据结构的文本表示: 如果需要将数据结构以文本形式保存,你可以编写自定义的函数来将结构体的字段转换为字符串,然后使用 fprintf() 函数将字符串写入文本文件。反之,你可以使用 fscanf() 函数读取文本文件的内容,并将其解析为结构体字段。

请注意,数据结构的读写涉及到数据的序列化和反序列化,需要小心处理数据的字节顺序(大端或小端)等问题,以确保数据的正确性。

苏格拉底挑战

问题与解决思路

针对文件路径和权限问题,我由于文件路径错误而无法打开文件,在仔细查看报错后,我发现是文件路径不对或未开管理员权限,正确改正路径,并给超级管理员权限后方可执行操作

实践过程

让chatgpt帮助我生成一份文件读写的代码,教会我如何用linux系统编写C语言程序

并利用一些常见的Linux命令,在虚拟机中练习:

ls - 列出目录中的文件和子目录。

pwd - 显示当前工作目录的完整路径。

cd - 更改当前工作目录。

cd 目录路径
mkdir - 创建新目录。

mkdir 新目录名
touch - 创建新文件。

touch 新文件名
cp - 复制文件或目录。

cp 源文件/目录 目标文件/目录
mv - 移动或重命名文件或目录。

mv 源文件/目录 目标文件/目录
rm - 删除文件或目录(请谨慎使用)。

rm 文件/目录
cat - 查看文件内容。

cat 文件名
less - 逐页查看文件内容,可以滚动查看。

==
less 文件名
head - 查看文件的前几行。

head 文件名
tail - 查看文件的末尾几行。

tail 文件名
grep - 在文本中搜索指定模式。

grep 模式 文件名
find - 查找文件或目录。

find 目录路径 -name 文件名
chmod - 更改文件或目录的权限。

chmod 权限设置 文件/目录
chown - 更改文件或目录的所有者。

chown 新所有者 文件/目录
ps - 显示当前运行的进程。

top - 实时监视系统性能和进程信息。


总结

C语言文件操作总结:

  • 文件操作是通过C语言来实现对文件的读写、创建、编辑和删除等操作的过程。
  • 可以使用标准库函数如 fopen()、fclose()、fread()、fwrite()、fgets()、fprintf() 等来进行文件操作。
  • 文本文件和二进制文件是两种常见的文件类型,每种类型有不同的读写方式。
  • 在文件操作中,要考虑数据结构的读写,需要了解数据的序列化和反序列化。

Markdown的优点总结:

  • 简单易学:Markdown语法简单,容易上手,不需要复杂的标记或编程知识。
  • 可读性强:Markdown文本很容易阅读,因为它的标记符号和格式化规则与文本的结构紧密相关。
  • 平台无关:Markdown文本可以在任何支持Markdown的文本编辑器或平台上打开和编辑,不受特定应用程序的限制。
  • 专注内容:Markdown让作者专注于内容创作,而不必过多关注格式和样式,因为格式化是自动处理的。
  • 支持HTML嵌入:Markdown允许嵌入HTML标签,因此可以在需要时使用更高级的样式和功能。

标签:文件,二进制,读写,写入,笔记,学习,文本文件,目录
From: https://www.cnblogs.com/lizhuotong/p/17709729.html

相关文章

  • 《信息安全系统设计与实现》第二周学习笔记
    《信息安全系统设计与实现》第二周学习笔记一、第九章I/O库函数1、系统调用函数函数描述fork创建一个新的进程,新进程是当前进程的副本。execve在当前进程中执行新的程序。waitpid等待指定进程的终止,并获取其退出状态。exit终止当前进程并返回退出状态。......
  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记2
    20211306密码系统设计与实现课程学习笔记2学习任务详情自学教材第九章,提交学习笔记本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文件中考虑字符读写,行读写,任意位......
  • 每日学习之Hbase的高可用
    7.1Hbase高可用简介HBase的高可用配置其实就是HMaster的高可用。要搭建HBase的高可用,只需要再选择一个节点作为HMaster。7.2搭建HBase的高可用教程连接:018.HBase的HMaster高可用_哔哩哔哩_bilibilihbase配置高可用之后,对原来的Java代码是不影响的8.HBase叫个屁8.1系统架构8......
  • 学习笔记2
    学习笔记2@目录学习笔记2一、学习笔记1.C语言中的文件操作内容2.文件操作都有什么?3.二进制文件和文本文件如何转换?4.数据结构如何读写?5.二进制文件操作6.相比于曾经我们关注文本文件的操作,我们以后该如何更多的关注操作二进制文件nullnull二、部分代码展示1.fget2.fprint3.fputs4......
  • 学习笔记2
    学习笔记:I/O库函数知识点知识点归纳1.系统调用函数open()、read()、write()、lseek()、close()2.I/O库函数fopen()、fread()、fwrite()、fseek()、fclose()3.fread算法:第一次调用fread()时候,FILE结构体的缓冲区时空的,fread()使用保存的文件描述符fd发出一......
  • 性能测试学习笔记(二)
    1.性能指标综述通常我们都从两个层面定义性能场景的需求指标:业务指标和技术指标。这两个层面需要有映射关系,技术指标不能脱离业务指标。所有的技术指标都是在有业务场景的前提下制定的,而技术指标和业务指标之间也要有详细的换算过程。这样一来,技术指标就不会是一块飞地。同时,在......
  • 学习笔记2 第九章的自学归纳
    第9章I/O库函数9.1I/O库函数系统调用是文件操作的基础,但他们只支持数据块的读/写。9.2I/O库函数与系统调用系统调用函数:open()、read()、write()、lseek()、close()open()用于打开一个文件并返回一个文件描述符。read()用于从已打开的文件描述符中读取数据。write()用于......
  • 靶机Scriptkiddie Funbox11 学习总结
    一、信息收集:1、扫描ARP信息:└─#arp-scan–l2、使用nmap扫描端口,-sC使用默认脚本进行漏洞扫描:└─#nmap-sC-sV-oAnmap/funbox192.168.2.23再扫描一下版本:通过上面的信息可以看到:(1)  系统为ubuntu,但是具体的版本不确定(2)  系统开放了21端口,运行的软件为proftpd,版......
  • 第九章学习笔记
    第九章学习笔记一、知识点归纳0.云班课中的提问文件操作都有什么?文件操作涵盖了对文件的创建、打开、读取、写入、关闭等基本操作。这些操作可以在计算机程序中对文件进行处理、管理和维护。常见的文件操作包括:创建文件:创建新的空文件或覆盖已存在的文件。打开文件:打开......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第二周学习笔记
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......