【原创】C语言文件编程

文件的概念

1、程序文件:源程序文件(如.c)、目标文件(如.obj)、可执行文件(如.exe)等,这些文件的内容是程序代码。

2、数据文件:供程序运行时读写的文件。

文件(file)通常是指存储在外部介质上数据的集合,操作系统将各种设备都统一视为文件来进行处理。

输入输出数据的过程如流水一般,数据从一处流向另一处,因此将输入输出形象地称为流,即数据流。流表示了信息从源到目的端的流动。

文件名

每个文件都需要一个唯一的标示——文件标识,即我们通常说的文件名。文件标识(文件名)包括三个部分:(1)文件路径;(2)文件名主干;(3)文件后缀。

如,这是一个文件名:  E:\C\example \ file .c

1             2   3

1为文件路径,2为文件名主干,3为文件后缀。

文件的分类

数据文件可分为(1)ASCII文件;(2)二进制文件。

1、ASCII文件:文本文件(file.txt);

2、二进制文件:内存中的数据不加转换地输出到外存就是二进制文件。因为数据在内存中同样是以二进制形式存储的,所以二进制文件又称为映像文件(image file)。

文件缓冲区系统:系统会自动地在内存区中为程序中每一个正在使用的文件开辟一个文件缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装载满缓冲区后才一起送到磁盘上。

程序数据区—>输出文件缓冲区—>磁盘;    磁盘—>输入文件缓冲区—>程序数据区

文件指针及文件操作

1、准备:所有的文件操作函数及定义类型都在"stdlib.h"中

2、文件指针:FILE *fp,即定义了一个可以指向文件的指针,对于文件的操作都需要依赖文件指针来进行

系统定义的3个文件指针变量:stdin/stdout/stderr

3、文件操作函数

fopen("filename","optinon")

option 含义 如果指定的文件不存在

r(只读)

为了输入数据,打开一个文本文件 出错

w(只写)

为了输出数据,打开一个文本文件(清空所有内容后再写入新数据) 新建文件

a(追加)

向文本文件尾添加数据 出错

rb(只读)

为了输入数据,打开一个二进制文件 出错

wb(只写)

为了输入数据,新建一个二进制文件 新建文件

ab(追加)

向二进制文件尾添加数据 出错

r+(读写)

为了读和写,打开一个文本文件 出错

w+(读写)

为了先写数据,后读,新建一个文本文件 新建文件

a+(读写)

为了读和写,打开一个文本文件 出错

rb+(读写)

为了读和写,打开一个二进制文件 出错

wb+(读写)

为了先写数据,后读,新建一个二进制文件 新建文件

ab+(读写)

为了读和写,打开一个二进制文件 出错

成功打开时返回指向文件的文件指针地址,失败为NULL。

fclose(fp)

在使用完一个程序后应该关闭它,如果不关闭文件,通常会造成数据丢失。

成功关闭返回0,失败则返回EOF(-1)。

fgetc(fp)

读一个字符。成功返回所读的字符,失败返回EOF(-1)。

fputc(fp)

写一个字符。成功返回输出的字符,失败返回EOF(-1)。

fgets(str,n,fp)

读取长度为n的的字符串放入字符数组str中。成功返回str的地址,失败返回NULL。

fputs(str,fp)

把str数组里的字符串写到fp指向的文件中。成功返回0,失败返回非0值。

fprintf(fp,"string",输出表列)

fscanf(fp,"string",输入表列)

就是printf/scanf前加上fp指明输出文件,其他与printf/scanf一致。

fread(buffer,size,count,fp)

fwrite(buffer,size,count,fp)

buffer:从文件读入的数据的存储区的地址(fread);从buffer开始的存储区中的数据向文件输出(fwrite)。

size:要读写的字节数。

count:要读写多少个数据项,每个数据长度为size。

因为这两个函数都需要指定size,所以fread/fwrite通常用于二进制文件的输入输出。

feof(fp):检测文件位置标记是否到达文件末尾。

rewind(fp):将文件位置标记复位到文件的开头。

fseek(fp,(number)L,0/1/2):(number)L代表位移量,以字节为单位,+向前,-向后;0:文件开头,1:当前位置,2:文件末尾。

这三个函数可以改变文件标记位置,因此可以用来对文本进行随机读写。

本文是参考谭浩强的C程序设计第四版的内容写出来的,如需转载请注明出处。

时间: 2025-01-01 12:18:14

【原创】C语言文件编程的相关文章

C语言文件读写操作总结

C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了.当使用打开函数时,必须给出文件名.文件操作方式(读.写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头.若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头. fopen(char

多功能电子通讯录(涉及到了双向链表的使用,Linux文件编程等等)

readme.txt //作为一个程序员,我们咋么能不写用户手册呢!MSP的我觉得用户体验是王道,苹果手机的用户体验的确不错!不过WP加油!我去,扯远了!赶紧看我的程序吧!  歡迎使用多功能電子通訊錄V1.0版本        如有BUG敬請原諒     make  之後便可以使用     ./ebook  運行本程序     make clean 清理本程序中間文件     make cleanall 清除所有非源程序文件 PS:我本想直接给大家看代码的,但是在这个过程中,重要不仅仅是代码,首

嵌入式 Linux C语言(十一)——C语言模块化编程

嵌入式 Linux C语言(十一)--C语言模块化编程 一.C语言模块化编程 所谓模块化编程,就是指一个程序包含多个源文件(.c 文件和 .h 文件),每个模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明.C语言模块化编程中对.c..h文件的潜规则: 1..c 文件主要负责实现,也就是定义函数:.h 文件主要负责声明,比如函数声明.宏定义等,结构的定义.自定义数据类型一般也放在头文件中,不能在.h文件中定义变量.将一个功能模块的代码单独编写成一个.c文件,然后把该

非缓冲文件编程(实时操作)

在下面情况下需要非缓冲文件编程. //银行数据安全要求严格 //键盘,鼠标,显卡设备 1.文本文件读写操作: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include<io.h> #include<fcntl.h>//文件打开,设置文件打开模式,就是下面的一大列函数. #include<sys/stat.h>//系统底层,sys表示驱动,stat

go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )

go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 文件操作 func Open(name string) (file *File, err error),*File 是实现了 io.Reader这个接口byte[] 转化为 bytes.Buffer:bytes.NewBuffer([]byte). 一.建立与打开 建立文件函数:func Create(name string) (file *File, err Error)func N

C语言多线程编程

原文:C语言多线程编程 注:本文内容来源于互联网,感谢作者整理! Windows的多线程编程 c语言 在Windows的多线程编程中,创建线程的函数主要有CreateThread和_beginthread(及_beginthreadex). CreateThread 和 ExitThread    使用API函数CreateThread创建线程时,其中的线程函数原型:  DWORD WINAPI ThreadProc(LPVOID lpParameter);在线程函数返回后,其返回值用作调用Ex

Mysql C语言API编程入门讲解

原文:Mysql C语言API编程入门讲解 软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程.  API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能.  Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作.  Mysql的安装  要进

Linux文件编程实例

//捕获fopen调用中的错误 #include <stdio.h> #include <errno.h> #include <string.h> #define MYFILE "missing.txt" int main(  ) { FILE* fin; fin=fopen( MYFILE,"r" ); if( fin==(FILE*)NULL ) { printf( "%s: %s\n",MYFILE,st

JAVA学习(八):JAVA文件编程

本博文主要介绍JAVA文件编程,主要包括通过JDK提供的I/O来从文件读取和写入数据.字节流读写文件的方法.字符流读写文件的方法.如何使用File类创建.删除和遍历文件与目录等操作. 不管是C/C++还是JAVA,都可能生成一些持久性数据,我们可以将数据存储在文件或数据库中,但是对于一些简单性的数据,如果存储在数据库中,则会显得有点得不偿失了,那么,如何在JAVA中将数据存储在文件中就成了中小型程序必须掌握的基本技能了. 下面一一讲解File类简介与文件的创建.删除.重命名,文件夹的创建.重命名