首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux【模拟实现C语言文件流】

---- 前言 在 C语言 的文件流中,存在一个 FILE 结构体类型,其中包含了文件的诸多读写信息以及重要的文件描述符 fd,在此类型之上,诞生了 C语言 文件相关操作,如 fopen、fclose、...fwrite 等,这些函数本质上都是对系统调用的封装,因此我们可以根据系统调用和缓冲区相关知识,模拟实现出一个简单的 C语言 文件流 本文重点 : 模拟实现 FILE 及 C语言 文件操作相关函数 注意...}MY_FILE; 当前模拟实现的 FILE 只具备最基本的功能,重点在于呈现原理 在模拟实现 C语言 文件操作相关函数前,需要先来简单回顾下 ---- 2、函数使用及分析 主要实现的函数有以下几个:...,实际要进行至少三次的拷贝:用户->用户级缓冲区->内核级缓冲区->文件,C语言 中众多文件流操作都是在完成 用户->用户级缓冲区 的这一次拷贝动作,其他语言也是如此,最终都是通过系统调用将数据冲刷到磁盘...C语言文件流 ---- 总结 以上就是本次关于 Linux【模拟实现C语言文件流】的全部内容了,通过 系统调用+缓冲区,我们模拟实现了一个简单版的 myStdio 库,在模拟实现过程中势必会遇到很多问题

27010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言文件编程-Linux环境下运行

    文件编程函数介绍 如果在Linux系统下学习C语言,就会了解到两套文件编程接口函数: C语言标准的文件编程函数: fopen、fread、fwrite、fclose Linux下提供的文件编程函数: open...C语言标准库提供的文件编程函数 下面介绍C语言标准库提供的文件编程函数,一般对文件常用的操作就是:创建(打开)、读、写、关闭。...#include FILE *fopen(const char *path, const char *mode); 函数功能: 打开或者创建文件 函数参数: const char *path 填文件的路径...Linux下的系统函数: 文件编程函数 Linux下也有一套系统函数,用于文件操作,这些函数在Linux下常用于读写设备文件;当然,读写普通文件也是一样,普通文件也是磁盘上的数据,也是操作块设备驱动。...函数参数: const char *pathname : 文件的路径 int flags :打开文件的权限.

    8410

    C语言的文件操作_C语言调用文件

    文章目录 文件打开与关闭 文件读写操作 读/写文件中的字符串 格式化读写文件操作 文件定位函数 作业使用案例(自己可以全部完成一遍): 文件打开与关闭 C文件操作用库函数实现,包含在stdio.h中。...文件使用方式: 打开文件→文件读/写→关闭文件 系统自动打开和关闭三个标准文件: 标准输入——键盘 stdin 标准输出——显示器 stdout 标准出错输出—–显示器 stderr...文件读写操作 当我们把文件打开之后,就可以对它进行读与写的操作。...读/写文件中的一个字符 文件I/O与终端I/O的关系 案例: 例如:从键盘输入字符,逐个写入文件,直到输入一个“#”为止。...C语言规定的起始位置有三种,分别为文件开头、当前位置和文件末尾,每个位置都用对应的常量来表示: 例如:把位置指针移动到离文件开头100个字节处: fseek(fp, 100, 0);

    9.4K10

    C#常见的文件路径Api

    我们经常有遇到要处理文件路径的需求,那么一般我们常见的有几种: 程序下面的文件 临时目录下的文件 获取程序下面的文件 首先我们创建了实例解决方案: ?...其中调用链是:Main.Shell->FooALibrary->,首先我们将FooAFolder.txt和FooA.txt的文件属性设置生成操作为内容,复制到输出目录为始终复制 那么我们有什么方法获取这两个文件的路径...CommonFilePathApiSample\Main.Shell\bin\Debug\netcoreapp3.1\FooBLibrary.dll GetCallingAssemblyPath: C:...Api是非常灵活且准确的 获取临时目录下的文件 我们也经常会遇到需要获取临时目录路径的方式来放置一些程序临时文件,可以用下面方式获取: Console.WriteLine(Path.GetTempPath...()); //C:\Users\Ryzen\AppData\Local\Temp\

    1.4K20

    C语言——文件操作

    程序文件: 1.源程序⽂件(后缀为.c) 2.目标文件(windows环境后缀为.obj) 3.可执行程序(windows 环境后缀为.exe) 数据文件: 存放程序运行时读写的数据。...文件名包含3部分:文件路径+文件名主干+文件后缀 如:c:\code.4.20\test.txt 二.文件操作 “ 流 ” 数据可以从外部设备输入,也可输出到外部设备,而不同的外部设备的输入输出操作各不一样...因为C语言程序启动时会自动打开3个“流”。 • stdin-标准输入流,在大多数的环境下从键盘输⼊,scanf函数就是从标准输入流中读取数据。...在C语言中,对于某一特定文件,会有一个专门相关联的结构体来存储文件的信息(文件名,文件状态,文件位置等),这个结构体被放在文件信息区,该结构体被系统重命名为FILE。...文件打开与关闭的例子: 值得注意的是,我们用fopen打开文件时,文件的后缀名不能省略,但在文件路径下,文件的后缀名被省略了。

    7510

    【C语言】文件操作

    什么是文件 在程序设计中,我们谈到的文件一般有两种(从文件功能的角度来分类):程序文件、数据文件 2.1 程序文件 程序文件包括源程序文件(后缀为.c)、目标文件(Windows环境下后缀为.obj,linux...文件名包含三部分:文件路径+文件名主干+文件后缀 例如:C:\code\example.txt 为了方便起见,文件标识通常被称为文件名。...C程序针对文件、画面、键盘等的数据输⼊输出操作都是同流操作的。 一般情况下,我们要想向流里写数据,或者从流中读取数据,都是要打开流,然后操作。...4.1.2 标准流 在C语言程序启动时,会默认打开三个流: ·stdin——标准输入流,在大多数的环境中从键盘输入 ·stdout——标准输出流,在大多数环境中输出到显示器界面 ·stderr——...stdin、stdout、stderr三个流的类型是:FILE*,通常被称为文件指针。 C语言中,就是通过FILE*的文件指针来维护流的各种操作的。

    12510

    【C语言】文件操作

    本文介绍了C语言中关于文件操作的内容知识,内容较为生涩,没有理解可以多次观看 ---- ---- 一、为什么使用文件 我们在写代码的过程中,有的时候某一些数据我们是想把它保存下来的,而不是说只有在程序运行的时候...他以某些程序设计语言编写,运行于某种目标结构体系上。...举个栗子,程序就如同以英语(程序设计语言)写作的文章,要让一个懂得英语的人(编译器)同时也会阅读这篇文章的人(结构体系)来阅读、理解、标记这篇文章。...,在我们使用完毕之后要关闭文件 ANSI C规定使用fopen和fclose函数来打开和关闭文件,下面是fopen和函数fclose的介绍 我们打开文件的方式,C语言规定有以下几种:...1.fputc代码展示: int main() { FILE* pfwrite = fopen("test.txt", "w");//以只写的方式打开文件名为test.txt的文件,路径在我们这个工程的目录底下

    3.8K10

    C语言--文件操作

    C语⾔中,就是通过 FILE* 的⽂件指针来维护流的各种操作的。...3.二进制文件和文本文件 数据在内存里面以二进制的形式存储,如果不进行转换输出到文件里面就是二进制文件; 如果转换成ASCII形式,以ASCII形式存储的文件就是文本文件; 对于二进制的文件,我们无法看懂...,只有这样我们才能够进行相应的操作,但是我们路径下面是没有这个文件的,所以perror就会显示对应的错误;如果已经新建了这个文件,那么程序运行就不会显示任何的错误; 如果我们是一些的方式,目录就会自己新建生成..."); if (pf == NULL) { perror("fopen"); return 1; } fputc('a', pf); fputc('b', pf); fputc('c'...=EOF) { printf("%c", ch); } fclose(pf); pf = NULL; return 0; } (3)fputs函数 上面的两个函数一次只能够读一个字符或者是写一个字符

    8410

    文件操作——C语言

    文件名: 每一个文件都要有一个唯一的文件标识,以便用户识别和引用 一个文件的文件名包含三部分:文件路径+文件名主干+文件后缀 就比如 text.txt这样一个文本文件,在电脑D盘C语言中study.c这个文件路径中...D: \ C语言 \ study.c \ text.txt 为了方便,文件标识常被成为文件名。...在C语言程序中对文件、画面、键盘等数据的输入输出操作都是通过流操作的。 一般情况下,我们想要向流里写数据,或者从流中读取数据,都是要打开流,然后操作。...stdin 、 stdout 、stderr 三个流的类型是FILE* , 通常称为文件指针 。 C语言中,就是通过FILE* 的文件指针来维护流的各种操作的。...在我们程序运行的过程中,我们该如何去判断访问一个文件是否访问结束,在C语言中有这样一个函数:feof feof函数 这个函数的作用是:当文件访问结束时,判断访问结束的原因是不是: 遇到文件末尾。

    10710

    C语言文件操作

    程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。 数据文件是什么?...⽂件名包含3部分:⽂件路径+⽂件名主⼲+⽂件后缀 例如: c:\code\test.txt                   为了⽅便起⻅,⽂件标识常被称为⽂件名 1.3流(stream) 那么什么是流呢...缓冲区的大小根据C编译系统决定的。 因为有缓冲区的存在,C语⾔在操作⽂件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂ 件。 如果不做,可能导致读写⽂件的问题。...在不同的C编译器的FILE类型包含的内容不完全相同,但是⼤同⼩异。 我们可以创建一个文件指针变量 FILE* pf;//⽂件指针变量 定义pf是⼀个指向FILE类型数据的指针变量。...fgets和fputs fgets从流中获取字符串并将其作为C字符串存储到str中,直到读取(num-1)个字符,或者到达换行符或文件结束符,以先发生的为准。

    6010

    【C语言】文件操作

    程序文件 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境 后缀为.exe)。 2....,屏幕,网络等等这种外部设备时,对于程序员来说要求太高了,所以抽象出一种 ‘流’ 的概念,程序员只需要把数据写到’ 流 '里面去,至于‘流’中的数据如何传到外部设备,我们不需要关注; 在C语言程序中,会默认打开...("%c\n", ch);//b ch = fgetc(pf); printf("%c\n", ch);//c ch = fgetc(pf); printf("%c\n", ch...("%c\n", ch);//a ch = fgetc(pf); printf("%c\n", ch);//b ch = fgetc(pf); printf("%c\n", ch...);//c ch = fgetc(pf); printf("%c\n", ch);//d //让文件指针的位置回到文件的起始位置 rewind(pf); //返回文件指针相对于起始位置的偏移量

    11510

    C语言-文件操作

    什么是文件 存储在硬盘上面的就是文件,文件又分为程序文件和数据文件 程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。...文件的打开和关闭 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的 名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。...文本文件和二进制文件 根据数据的组织形式,数据文件被称为 文本文件 或者 二进制文件 。 数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是 二进制文件 。...文件缓冲区 ANSIC 标准采用 “ 缓冲文件系统 ” 处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序 中每一个正在使用的文件开辟一块“ 文件缓冲区 ” 。...如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓 冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根 据C 编译系统决定的。

    8910
    领券