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

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

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

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

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

    文件编程函数介绍 如果在Linux系统下学习C语言,就会了解到两套文件编程接口函数: C语言标准的文件编程函数: fopen、fread、fwrite、fclose Linux下提供的文件编程函数: open...C语言标准库提供的文件编程函数 下面介绍C语言标准库提供的文件编程函数,一般对文件常用的操作就是:创建(打开)、读、写、关闭。...Linux下的系统函数: 文件编程函数 Linux下也有一套系统函数,用于文件操作,这些函数在Linux下常用于读写设备文件;当然,读写普通文件也是一样,普通文件也是磁盘上的数据,也是操作块设备驱动。...int close(int fd); 函数功能: 关闭已经打开的文件. 4. 案例: 实现文件拷贝功能(fopen) 例如: cp 123.c 456.c 将123.c的数据拷贝到456.c文件里。...案例: 实现文件拷贝功能(open) 例如: cp 123.c 456.c 将123.c的数据拷贝到456.c文件里。

    7510

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

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

    9.4K10

    C】记录两个C语言的误区

    前言 之前在windows上使用vc++6.0,编写过c的代码,主要是为了完成一些作业,并没有十分深入的学习C语言. 因此当时留下了两个对于c语的言的误区,现在记录一下。...一开始我以为是使用的编译器的标准不同,因此尝试着使用c89,c90,c99,c11编译程序,使用c89和c90时, 编译器还是没有报任何错误,而使用c99和c11时,会报下面的警告: test.c:...随后我又看了一下gcc的版本,发现是4.8.4, 然后查看了一下它的手册, 发现其默认使用的c编译标准是c90 The default, if no C language dialect options...8:7: warning: conflicting types for ‘aa’ [enabled by default] void aa() { ^ test.c:4:2: note...: previous implicit declaration of ‘aa’ was here aa(); ^ 如果将aa的void改为double,就会直接报错了: test.c:8:9:

    85820

    C语言文件操作

    本文介绍了C语言中关于文件操作的内容知识,内容较为生涩,没有理解可以多次观看 ---- ---- 一、为什么使用文件 我们在写代码的过程中,有的时候某一些数据我们是想把它保存下来的,而不是说只有在程序运行的时候...他以某些程序设计语言编写,运行于某种目标结构体系上。...,在我们使用完毕之后要关闭文件 ANSI C规定使用fopen和fclose函数来打开和关闭文件,下面是fopen和函数fclose的介绍 我们打开文件的方式,C语言规定有以下几种:...从介绍中可以读出,fopen是需要两个参数的第一个是我们的文件名,第二个参数是我们打开文件的方式,我们如果只读或只写或追加的话,打开文件的方式由表格可知,有三种,分别是(“r”,“w”,“a”)。...而我们现在介绍的这两个函数其实多了一个参数,这个参数就是指向文件文件指针,我们可以更改这个文件流。

    3.8K10

    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*的文件指针来维护流的各种操作的。

    11610

    C语言文件操作

    程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。 数据文件是什么?...缓冲区的大小根据C编译系统决定的。 因为有缓冲区的存在,C语⾔在操作⽂件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂ 件。 如果不做,可能导致读写⽂件的问题。...在不同的C编译器的FILE类型包含的内容不完全相同,但是⼤同⼩异。 我们可以创建一个文件指针变量 FILE* pf;//⽂件指针变量 定义pf是⼀个指向FILE类型数据的指针变量。...fgets和fputs fgets从流中获取字符串并将其作为C字符串存储到str中,直到读取(num-1)个字符,或者到达换行符或文件结束符,以先发生的为准。...fscanf和fprintf 将这两个函数之间类型和scanf以及printf进行比较:可以发现都是多了FILE*stream,多了一个流,需要通过流来实现前两个函数的作用 fread和fwrite fread

    5410

    文件操作——C语言

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

    10610

    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); //返回文件指针相对于起始位置的偏移量

    10510

    C语言-文件操作

    二进制文件和文本文件 2.1 数据⽂件 在C语言文件操作中主要学习的是对于数据文件的操作 数据文件不是用来保存程序的,而是用来保存程序运行后产生的数据 2.2 文本文件 文本文件是以人类可读的字符形式存储数据的文件...在C语言中,使用标准的文件I/O函数(比如fprintf、fscanf、fgets、fputs等)来处理文本文件是很方便的。这些函数可以直接读取和写入文本文件中的文本数据,并且适合于处理文本内容。...由于二进制文件不以人类可读的形式存储数据,它们无法直接用文本编辑器打开和阅读。 在C语言中,处理二进制文件需要使用fread和fwrite等函数,这些函数可以直接读取和写入二进制数据。...在C语言中,流是以FILE结构表示的,每个流都对应着一个FILE类型的指针。通过这个指针,程序可以访问流的属性和进行读写操作。...3.1.2 标准流 在C语言中,标准库提供了一组预定义的流,称为标准流(standard streams),它们包括标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)。

    8610

    C语言-文件编程

    文件编程函数介绍 如果在Linux系统下学习C语言,就会了解到两套文件编程接口函数: C语言标准的文件编程函数: fopen*、fread、fwrite、*fclose Linux下提供的文件编程函数:...C语言标准库提供的文件编程函数 下面介绍C语言标准库提供的文件编程函数,一般对文件常用的操作就是:创建(打开)、读、写、关闭。...Linux下的系统函数: 文件编程函数 Linux下也有一套系统函数,用于文件操作,这些函数在Linux下常用于读写设备文件;当然,读写普通文件也是一样,普通文件也是磁盘上的数据,也是操作块设备驱动。...int close(int fd); 函数功能: 关闭已经打开的文件. 4. 案例: 实现文件拷贝功能(fopen) 例如: cp 123.c 456.c 将123.c的数据拷贝到456.c文件里。...案例: 实现文件拷贝功能(open) 例如: cp 123.c 456.c 将123.c的数据拷贝到456.c文件里。

    12.9K31

    C语言 | 文件概述

    “要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...C语言什么是文件 文件有不同的类型,在程序设计中,主要用到两种文件: 程序文件:包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容时程序代码。...C语言文件名 一个文件要有一个唯一的文件标识,以便用户识别和引用。...C语言文件缓冲区 ANSI C标准采用“缓冲文件系统”处理数据文件,所谓缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区。

    2.8K20

    C语言文件(windows)

    文件的概念(流 文件 缓冲区),文件的打开,文件的关闭,读写文件(字符、二进制)(顺序 随机) 文件:程序文件(.c .cpp .java .exe);数据文件(.dat) 广义的文件:程序数据输出到磁盘或其他外部设备...,称为文件。...在C语言中,把文件可以看作一个字符(或字节)的序列,即由一个一个字符(字节)的数据顺序组成的。一个输入输出流就是一个字符流或字节流。...文件名:文件名是由3部分组成的(D:\DD\TEMP\file.dat) 文件的路径 文件名主干 文件的后缀名 文件缓冲区 是指文件系统会自带在内存中为程序的每一个文件开辟一个文件的缓冲区。...从内存向磁盘输出数据时,必须先将数据发送到文件缓冲区中,在文件缓冲区装满后才一起将数据输出到磁盘。 文件指针:表示一个可以指向文件的指针。int *p

    2.3K20
    领券