文件目录和目录文件的作用区别和联系 & C语言文件相关操作 FILE用法

2023-11-19

一.文件目录和目录文件的作用区别和联系

1.他们各自的概念和联系
文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
**FCB:**为了能对一个文件进行正确的存取,操作系统必须为文件设置用于描述和控制文件的数据结构,称之为“文件控制块(FCB)”。
**目录文件:**为了实现对文件目录的管理,通常将文件目录以文件的形式保持在外存,这个文件就叫目录文件。

二:C语言为什么要先open打开文件, 最后close关闭文件,为什么不直接read+文件名读文件

首先我们要先了解文件指针
文件指针是指向文件有关信息的指针, 这些信息包括:文件名状态当前位置, 他们保存在一个结构体中, 在使用时要先为他分配空间,用来存放相关的信息, 该结构体由系统定义, C语言规定该类型为FILE型

typedef struct
{
	short level;
	unsigned flags;
	char fd;
	unsigned char hold;
	short bsize;
	unsigned char *buffer;
	unsigned ar*curp;
	unsigned istemp;
	short tokenl;
}FILE;

在编写程序时不用将上面内容写出, 只需要写以下代码

FILE *fp;

打开文件的操作

FILE *fp;
fp = fopen(文件名, 使用方式);

即是

FILE *fp=fopen(char *filename,char *mode);
/*
filename:文件名,如“students.txt”。
mode:打开方式(读写方式,文件类型)
*/

文件关闭

fclose(FILE *fp)
一般,fclose(fp)应与fopen配对使用,特别是含有写方式的文件,若不关闭,可能会造成文件数据丢失。

配合文件指针可以进行一系列的操作
1.单字节输入输出 fgetc, fputc
2.字符串输入输出 fgets, fputs
3.格式化读写 fscanf, fprintf

ch = fprintf(文件类型指针, 格式化字符串, 输出列表);
例如:
fprintf(fp, "%d", i);
他的作用是将整型变量i以%d的格式输出到fp指向的文件中
相反
fscanf(fp, "%d", &i);
读入fp所指向文件中的i值

4 整块读写 fread fwrite

fread(buffer, size, count, fp);
从fp所指向的文件中读入count次, 每次读写size字节, 读入的信息存在buffer中

fwrite(buufer, size, count, fp);
将buffer的地址开始的信息输出count次, 每次写size字节到fp所指向的文件中

5.指针移动, 实现随机读取

#include <stdio.h>
int main()
{  
    FILE *fp;
    int c;
    fp=fopen("handsomehuang.txt","r");
    fgetc(fp);
    fgetc(fp);
    rewind(fp);//文件指针重置为0 
    printf("%c",fgetc(fp));
    fclose(fp);
}

检测文件是否读到末尾

#include <stdio.h>
int main()
{  
   FILE *fp;
   fp=fopen("handsomehuang.txt","r");
   while(!feof(fp))
   {   printf("%c",fgetc(fp));
   }
   fclose(fp);
}
/*
feof是C语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值,文件未结束,返回0
*/

6.文件的定位 fseek函数

fseek(文件类型指针, 位移量, 起始点);

该函数的作用是移动文件内部的位置指针。其中,“ 文件类型指针”指向被移动的文件:“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB时不会出错。当用常量表示位移量时,要求加后缀 “L";“起始点”表示从何处开始计算位移量,规定的起始点有文件首、文件当前位置和文件尾3种
在这里插入图片描述

fseek(fp,-20L,1);

表示将位置指针从当前位置向后退20个字节。

7.ftell函数

ftell函数的一般形式如下:
long ftell(文件类型指针);

该函数的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。当返回值是-1L 时, 表示出错

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件目录和目录文件的作用区别和联系 & C语言文件相关操作 FILE用法 的相关文章

  • MySQL基础(非常全)

    MySQL基础 一 MySQL概述 1 什么是数据库 答 数据的仓库 如 在ATM的示例中我们创建了一个 db 目录 称其为数据库 2 什么是 MySQL Oracle SQLite Access MS SQL Server等 答 他们均是
  • Minikube 架构及启动流程剖析

    原文作者 wzqnls 编辑 夏天 对于要学习 Kubernetes 或者需要本地开发的开发人员来说 Minikube 是一个不错的选择 通过使用 Minikube 这个工具 我们可以非常快捷地在本地部署一套单节点的 Kubernetes
  • mapengpeng1999@163.com 操作系统4~处理机调度

    处理机调度 1 三级调度体系 1 处理机调度主要是对处理机运行时间进行分配 即 按照一定算法或策略 将处理机运行时间分配给各个并发进程 同时尽量提高处理机的使用效率 2 现代操作系统中 按调度所实现的功能分3种类型 高级调度 中级调度和低级
  • RTX线程通信之——线程标志

    文章目录 Thread Flags 概念 RTX线程标志API 案例 LED灯同步闪亮 小结 参考资料 Thread Flags In a real application we need to be able to communicate
  • 设备管理过程

    复杂度2 5 机密度2 5 最后更新2021 04 19 AIX中对设备会有如下五个操作 define aix下能看到设备的定义 但驱动程序并没有加载或初始化 该设备不可用 lsdev看到设备时defined 很多逻辑设备 vg lv等 只
  • Java堆的自动垂直缩放

    多年以来 java一直是贪婪的应用程序的同义词 这种类型的应用程序在晚上打开冰箱并吞噬所有可用资源 直到崩溃 该行为的主要原因是缺乏一种有效的方式来将操作系统在Java堆中分配且不再使用的内存交还给操作系统 However with the
  • 《一个操作系统的实现》读书笔记-- 第一章--最小的“操作系统”

    一 最简单的 操作系统 最最简单的 操作系统 就是一个最最简单的引导扇区 Boot Sector 虽然它不具有任何功能 但是它却能够直接在裸机上运行 不依赖其他软件 一个引导扇区是512个字节 并且以0xAA55为结束标识的扇区 下面就是那
  • 03LinuxC线程学习之线程共享和非共享

    1 线程共享和非共享 1 1 线程共享资源 1 文件描述符表 由于线程间共享进程间的内容 而文件描述符表在主线程的PCB当中 各个线程可以直接去请求访问 所以线程间通信就不需要像进程那样通过管道这些方式通信 2 每种信号的处理方式 即当某个
  • Linux学习--CentOS7.5

    CentOS7命令大全 Linux系统简介 Unix Linux发展史 Linux目录结构 树形结构 查看 切换以及创建目录 文本内容操作 grep工具 关机和重启 Linux命令 基本用法 ls list 使用通配符 mkdir 别名 g
  • [架构之路-185]-《软考-系统分析师》-3-操作系统基本原理 - 文件索引表

    目录 一 文件的索引块 二 索引分配表 三 索引表的链接方案 四 多层索引 五 混合索引分配 一 文件的索引块 存放在目录中的文件 并非是文件的真实内容 目录中记录了文件的索引块是几号磁盘块 文件对应的索引表是存放在指定的磁盘块中的 二 索
  • 自己动手写操作系统(一)

    本系列文章将一步步实现一个简单的操作系统 实验环境是在Linux系统下通过Bochs虚拟机运行我们自己写的操作系统 一 实验环境搭建 1 Ubuntu的安装 Windows用户可以选择在虚拟机中安装Ubuntu 具体安装教程可自行搜索 2
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • 由于回车符引起的shell错误

    今天弟弟写shell时出现一个错误 源代码如下 zip r 1 2 执行时出现错误 我也写了相同的语句 发现是可以执行的 把两个文件对比一看 差别在于 出错shell 正确shell 在linux下的回车是 n 在win下面的回车是 r n
  • 操作系统常见面试题

    1 什么是进程 Process 和线程 Thread 有何区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动 进程是系统进行资源分配和调度的一个独立单位 线程是进程的一个实体 是CPU调度和分派的基本单位 它是比进程更小的能
  • 【操作系统】王道考研 p42 段页式管理方式

    段页式管理方式 知识总览 分段 分页管理方式中最大的优缺点 关于段式管理会产生外部碎片 ps 分段管理中产生的外部碎片也可以用 紧凑 来解决 只是需要付出较大的时间代价 分段 分页 段页式管理 示意图 先分段 后分页 段页式管理的逻辑地址结
  • 磁盘调度算法笔记和练习题

    磁盘调度算法 先来先服务FCFS 最短寻道时间优先SSTF 扫描调度SCAN 练习题 先来先服务FCFS 最短寻道时间优先SSTF 扫描调度SCAN 它是一次只响应一个方向上的请求 这个方向上的请求都响应完了 再掉头处理另一个方向上的 有点
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • 使用ShellJS提升你的开发效率(一)

    Shelljs Unix shell commands for Node js Shelljs是Node js下的脚本语言解析器 具有丰富且强大的底层操作 Windows Linux OS X 权限 Shelljs本质就是基于node的一层
  • Linux(13):例行性工作排程

    例行性工程 听谓的排程是将工作安排执行的流程之意 Linux 排程就是透过 crontab 与 at 这两个东西 两种工作排程的方式 一种是例行性的 就是每隔一定的周期要来办的事项 一种是突发性的 就是这次做完以后就没有的那一种 at at

随机推荐

  • 卡尔曼滤波的推导

    与尔共勉 1 状态方程 其中为卡尔曼滤波估计值 也就是我们的目的值 我们要估计的也就是这个值了 为由K时刻得到K 1时刻的值 为系统的输入乘上一个系数 A为转移矩阵 为噪声 服从 2 测量方程 为测量误差 其服从正态分布 H为测量矩阵 3
  • 【Android 自定义 View】--> 双列时间轴

    不断学习 做更好的自己 视频号 CSDN 简书 欢迎打开微信 关注我的视频号 KevinDev 点我 点我 效果图 基类代码 适配器 BaseAdapter java Created on 2021 7 16 14 50 author Go
  • 计算机网络-协议栈分层

    1 划分网络层次的优缺点 优点 1 开发人员可以只关注整个结构中的某一层 2 可以很容易用新的实现替换原有层次中的实现 3 可以降低层与层之间的依赖 4 有利于标准化 5 利于各层逻辑的复用 缺点 1 一层可能冗余较低层的功能 例如许多协议
  • 【云原生

    本期文章是K8s第3篇 主要是实战Kubectl创建Deployment部署应用 通过本期文章 我们将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令 在前期的文章中 已经介
  • 优惠券叠加规则、优惠分摊介绍

    本文主要介绍优惠券的叠加规则 下单结算时的优惠券分摊及优惠券核销细节 同时也会将上面提到的各种优惠券 以某宝下单的例子来讲解内容 对于优惠券的使用从场景不同可以分为 线上使用和线下使用 其实严格的讲两个方式最终的目的和结果都一样 1 线上使
  • OpenWRT命令

    系统信息 arch 显示体系结构 uname m 显示当前硬件平台的类型 uname r 显示使用的内核版本 dmidecode q 显示硬件系统组件 SMBIOS DMI hdparm i dev hda 显示硬盘特征 hdparm tT
  • Python循环结构

    while循环 如果不使用循环语句 就只能用下面的方法逐个输出单个字符 使用循环结构就可以更方便地遍历 username EMT print username 0 print username 1 print username 2 用下面的
  • windows下使用CMake构建工程:cmake-gui+Visual Studio

    文件结构 在工程目录下构建目录src thirdparty build src 存放自己写的源代码文件 thirdparty 存放使用的第三方库 build 存放编译时生成的文件 因为很多很杂乱 所以单独目录存放 保持项目文件夹整洁 在bu
  • 核方法、核密度估计与核函数

    核方法 核密度估计与核函数 核方法 Kernel Methods 是一类常用于机器学习和统计学中的非参数方法 主要用于特征转换和模式识别 核方法通过将数据映射到高维特征空间 使得线性不可分的问题在高维空间中变得线性可分 其中 核函数 Ker
  • 未来展望——学习规划

    不知不觉就来到了研二 找工作和科研两座大山压在身上 我的专业是机械设计及理论 主要研究的方向是新能源汽车电驱动系统设计 平时主要的工作就是先在Matlab Simulink里搭建出PMSM的控制模型 观测器模型等 再将其转化为C代码烧录到D
  • 什么是GPT?初学者如何使用GPT?GPT入门学习

    灵魂发问 GPT科研中没有那么神 GPT账号不能轻松使用 GPT怎样才融合到我的科研中 别人用的非常酷 为什么我用的不行 让GPT成为您的科研加速器 GPT对于每个科研人员已经成为不可或缺的辅助工具 不同的研究领域和项目具有不同的需求 如在
  • tp-wr886n虚拟服务器在哪,新版TP-LINK TL-WR886N默认登录地址是多少?【图解】

    新版TP LINK TL WR886N默认登录地址是多少 问 最近刚买的普联TP LINK新款无线路由器 请问tplink TL WR886N默认登录地址是多少 想要登录这台TL WR886N不知道管理IP地址如何登录呢 答 TP LINK
  • iOS进阶_kvc使用注意事项

    细节1 我们在项目中使用kvc 在设置model属性的时候 注意尽量不要使用基本数据类型 实例 数据模拟 注意age是null类型的 Person h import
  • robotframework安装使用

    一 Robot Framework 介绍 Robot Framework 是一款基于 Python 的功能自动化测试框架 它具备良好的可扩展性 支持关键字驱动 可以同时测试多种类型的客户端或者接口 可以进行分布式测试执行 主要用于轮次很多的
  • 解决问题方法汇总:ROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysq

    var lib mysql mysql sock 这个目录是my cnf中配置的 连接localhost通常通过一个Unix域套接字文件进行 即这个mysql sock文件 如果套接字文件被删除了 本地客户就不能连接 systemctl s
  • el-upload上传阿里云(oss上传)

    oss上传 在你的项目安装oss npm install ali oss save 初始化oss 配置文件 新建一个js文件 内容如下 代表你所申请的参数 问运维要 let OSS require ali oss export let cl
  • Oracle函数集锦

    一 case when then 用法 case具有两种格式 简单case函数和case搜索函数 简单case函数 case sex when 1 then 男 when 2 then 女 else 其他 end case搜索函数 case
  • OpenGL GLFW入门篇 - 画矩形2

    上一篇介绍了如何渲染矩形 这一篇介绍如何将叠加的部分透明显示 效果图 主体代码 void DrawRectangle void GLfloat xl yt xr yb w h glPushMatrix glLoadIdentity glTr
  • [vue3]用element封装一个抽屉组件

    需求 因为抽屉组件在后台管理系统是非常常见的 那么封装起来怎么样 可以传入标题 size 提交按钮的文字 传入部分即便超出范围也不会挤掉下面的按钮 会出现滚动条 如图
  • 文件目录和目录文件的作用区别和联系 & C语言文件相关操作 FILE用法

    一 文件目录和目录文件的作用区别和联系 1 他们各自的概念和联系 文件目录 把所有的FCB组织在一起 就构成了文件目录 即文件控制块的有序集合 FCB 为了能对一个文件进行正确的存取 操作系统必须为文件设置用于描述和控制文件的数据结构 称之