1、文件的基本操作
(1)文件指针
文件指针是指向文件有关信息的指针,这些信息包含文件名,状态,和当前位置,他们保存在一个结构体变量中。在使用文件时需要在内存中为其分配空间,用以存放文件的基本信息。该文件是由系统定义的,C语言规定该类型为FILE型,声明如下:
typedef struct
{
short level;
unsigned flags;
char fd;
unsigned char hold;
short bsize;
unsigned char *buffer;
unsigned ar *curp;
unsigned istemp;
short token;
}FILE;
在编写程序时可以直接定义上面的FILE类型来定义变量,但不必全部写出结构中的内容,只需要写成:
FILE *fp;
fp是一个指向FILE类型的指针变量。
(2)文件的打开
fopen函数用以打开一个文件,打开文件的操作就是创建一个流。fopen函数原型在stdio.h中,调用形式如下:
FILE *fp;
          fp=fopen(文件名,使用文件方式);
fopen函数打开文件成功,则返回一个有确定指向的FILE类型指针;若打开失败,则返回NULL。
(3)文件的关闭
fcose函数用以关闭文件,原型在stdio.h中,调用的一般形式为:
fclose(文件指针);
例如:fclose(fp);
fclose函数带回一个返回值,当正常完成关闭文件操作时,fclose函数返回一个0,否则返回EOF。
2、文件的读写
(1)fputc函数
ch=fputc(ch,fp);
该函数的作用是把一个字符写到磁盘文件(fp所指向的文件)中去。其中ch是要输出的字符,它可以是字符常量也可以是字符变量。fp是文件指针变量。如果输出成功,则返回值就是输出的字符,否则返回EOF。
(2)fgetc函数
ch=fgetc(fp);
该函数的作用是从指定的文件(fp指向的文件)读入一个字符赋给ch。需要注意的是,该文件必须是以读或读写的方式打开。当文件遇到文件结束符时将返回结束标志EOF。
(3)fputs函数
fputs(字符串,文件指针)
该函数的作用是向指定的文件写入一个字符串,其中字符串可以使字符串常量,也可以是字符数组名、指针或变量。
(4)fgets函数
fgets(字符数组名,n,文件指针);
该函数的作用是从指定的文件中读一个字符串到字符数组中。n表示所得到的字符串中字符的个数(包含“\0”)。
(5)fprintf函数:读磁盘文件
ch=fprintf(文件类型指针,格式字符串,输出列表);
例如:fprintf(fp,"%d",i);
他的作用是将整型变量i的值以“%d”的格式输出到fp指定的文件中。
(6)fscanf函数:写入磁盘文件
fscanf(文件类型指针,格式字符串,输入列表);
例如:fscanf(fp,"%d",&i);
他的作用是读入fp所指向的文件中的i的值。
(7)fread和fwrite函数:整块读写
fread(buffer,size,count,fp);
该函数的作用是从fp所指的文件黄总读入count次,每次读size字节,如如的信息存入buffer地址中。
fwrite(buffer,size,count,fp);
该函数的作用是将buffer地址开始的信息输出count次,每次写size字节DOAfp指定的文件中。
3、文件的定位
(1)fseek函数
借助缓冲型I/O系统中的fseek函数可以完成随机读写操作
fseek(文件类型指针,位移量,起始点);
该函数的作用是移动文件内部位置指针。其中,“文件类型指针”指向被移动的文件;“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64kb时不会出错。“起始点”有三种。如下:
起始点
起始点 表示符号 数字表示
文件首 SEEK - SET 0
文件当前位置 SEEK - CUR 1
文件末尾 SEEK - END 2
例如:fseek(fp,-20L,1);
(2)rewind函数
int rewind(文件类型指针)
该函数的作用是使位置指针重新返回文件的开头,该函数没有返回值。
(3)ftell函数
long ftell(文件类型指针)
该函数的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。当返回值是-1L时,表示出错。

《c语言从入门到精通》看书笔记——第14章 文件相关推荐

  1. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络

    1.IP地址 每台计算机都需要一个IP地址以识别自己,IP地址由IP协议规定的32位的二进制表示,最新的IPV6协议将IP地址提升为128位,但还不能广泛应用. 32位的IP地址主要分为前缀和后最两部 ...

  2. 《c语言从入门到精通》看书笔记——第13章 预处理

    1.宏定义 宏定义是预处理命令的一种,它提供了一种可以替换源代码中字符串的机制. 宏定义指令#define用来定义一个标识符和一个字符串,一这个标识符来代表这个字符串,在程序中每次遇到该标识符时就用所 ...

  3. 《c语言从入门到精通》看书笔记——第10章 指针

    1.地址与指针 地址:就是内存区中对每个字节的编号 指针:可以看作是内存中的一个地址.在程序中定义了一个变量,在进行编译时就会给该变量在内存中分配一个地址,通过访问这个地址可以找到相应的变量,这个变量 ...

  4. 《c语言从入门到精通》看书笔记——第3章 数据类型

    1.编程规范 (1)代码缩进:统一为4字符,用Tab (2)变量常量命名规范:常量命名统一为大写格式.如果成员变量,均以m_开始.普通变量,取与实际意义相关的名称,要在前面添加类型的首字母,并且名称的 ...

  5. 《c语言从入门到精通》看书笔记——第2章 算法

    1.通常,一个程序包含算法.数据结构.程序设计方法及语言工具和环境这四个方面 2.算法的特性: 有效性.确定性.可行性.输入(一个算法应有零个获多个输入).输出(1个或多个) 3.算法的优劣: (1) ...

  6. 《c语言从入门到精通》看书笔记——第1章 C语言的概述

    1.使用普遍的高级语言有:Fortran/ALGOL/Basic/COBOL/LISP/Pascal/PRLOLG/C/C++/VC/VB/Delphi/Java等 2. C语言是一个面向过程的语言, ...

  7. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(下)——套接字

    1.套接字概述 套接字是网络通信的基石,是网络通信的基本构件. 所谓套接字,实际上是一个指向传输提供者的句柄.在WinSock中,就是通过操作该句柄来实现网络通信和管理的.根据性质和作用不同,套接字可 ...

  8. 《c语言从入门到精通》看书笔记——第15章 存储管理

    1.内存的组织方式 程序被组织成以下4个逻辑段 (1)可执行代码 (2)静态数据.可执行代码和静态数据存储在固定的内存位置 (3)动态数据(堆).程序请求动态分配的内存来自内存池,也就是上面所列举的堆 ...

  9. 《c语言从入门到精通》看书笔记——第12章 位运算

    1.按位运算就是对字节或字中的实际位进行检测.设置或移位. 位运算符 2.位段的概念与定义 位段类型是一种特殊的结构类型,其所有成员的长度均是以二进制位为单位定义的,结构中的成员被称为位段.位段定义的 ...

最新文章

  1. Linux 启动过程详解
  2. matlab 清楚屏幕,在shell中清除屏幕
  3. 垂直margin合并问题
  4. C语言中前面有四个空格,在C语言编程中什么叫前导空格,什么叫尾随空 – 手机爱问...
  5. 视频播放器的极致体验优化
  6. 数据库大战,AWS又将目标瞄准了微软SQL Server
  7. php中session总结,PHP5中Session总结(一)
  8. 开源阅读_开源如何维持您的阅读习惯
  9. 视频号的商业想象空间,在前天更新后,会在以下3个方面
  10. iview2.0 bug之+8 区的 DatePicker
  11. QT 基于饼状图的一个抽奖系统
  12. python建立ip代理池_如何建Python爬虫的IP代理池?3步学会搭建IP代理池
  13. 面对tomatserver使用的webrequest
  14. 详解php与mysql的关系
  15. ios逆向笔记--越狱IOS平台简介
  16. html设置只在最后一页显示页脚,在Word里怎么设置页脚只在最后一页显示?
  17. oled显示模块ssd1306
  18. BootStrap初学者怎么使用?
  19. VS Code 2022路线图:大量Spring Boot优化提上日程
  20. TF2.0 API学习(Python)六:函数compute_loss、函数bbox_giou、函数bbox_iou

热门文章

  1. CRM_OPPORT_TEXT_DETER_STANDARD
  2. SAP UI5应用部署在tomcat上运行的部署路径问题,基于Eclipse
  3. SAP UI5 OData API binding.filter(filter) 会触发发往后台的 OData 请求
  4. Service group - get entity set
  5. SAP Hybris backoffice登录时的语言选择
  6. SAP CRM呼叫中心和社交媒体集成的所有BC set实现列表
  7. SAP CRM BOL attribute_ref的merge逻辑调试
  8. arraylist 初始化_ArrayList实现原理(JDK1.8)
  9. java redis缓存实例_spring项目整合ehcache和redis缓存实例
  10. ensp路由器无法启动_ensp和CRT使用小技巧