所谓“文件”一般指存储在外部介质上数据的集合。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件,又称为文本文件,它的每一个字节存放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存取。

一、文件的打开与关闭

ANSI C规定了标准输入输出函数库,用fopen()函数来实现打开文件。fopen函数的调用方式通常为:

FILE * fp;

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

文件使用方式 含义
“r”(只读) 为输入打开一个文本文件
“w”(只写) 为输出打开一个文本文件
“a”(追加) 向文本文件尾增加数据
“rb”(只读) 为输入打开一个二进制文件
“wb”(只写) 为输出打开一个二进制文件
“ab”(追加) 向二进制文件尾增加数据
“r+”(读写) 为读/写打开一个文本文件
“w+”(读写) 为读/写建立一个新的文本文件
“a+”(读写) 为读/写打开一个文本文件
“rb+”(读写) 为读/写打开一个二进制文件
“wb+”(读写) 为读/写建立一个新的二进制文件
“ab+”(读写) 为读/写打开一个二进制文件

用fclose函数关闭文件。fclose函数调用的一般形式为:

fclose(文件指针);

二、文件的读写操作

fputc函数把一个字符写到磁盘文件上去。其调用形式为:fputc(ch,fp);

fgetc函数从指定的文件读入一个字符,该文件必须是以读或读写方式打开的,其调用形式为:ch=fgetc(fp);

fread和fwrite用来读写一个数据块,其一般调用形式为:

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

其中:

buffer:是一个指针。对fread来说,它是读入数据的存放地址;对fwrite来说,它是要输出数据的地址。

size:要读写的字节数。

count:要进行读写多少个size字节的数据项。

fp:文件型指针。

格式化读写:

fprintf(文件指针,格式字符串,输出表列);

fscanf(文件指针,格式字符串,输出表列);

fgets的作用是从指定文件读入一个字符串。

fgets(str,n,fp);

fputs函数的作用向指定的文件输出一个字符串。

fputs(str,fp);

三、文件的定位

rewind函数的作用是使位置指针重新返回文件的开头。

rewind(fp);

fseek函数可以实现改变文件的位置指针。

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

起始点 名 字 用数字代表
文件开始 SEEK_SET 0
文件当前位置 SEEK_CUR 1
文件末尾 SEEK_END 2

“位移量”是指以起始点为基点,向前移动的字节数。ANSI C要求位移量是long型数据。

ftell函数的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。

ftell(fp);

四、文件的状态

feof(fp);    //若到文件末尾,函数值为“真”(非0)。

ferror(fp);   //若对文件操作出错,函数值为“真”(非0)。

clearerr(fp);  //使ferror和feof函数值置零。

C语言的文件处理的更多相关文章

  1. BMP头文件格式以及C语言读取头文件【转】

    BMP头文件格式以及C语言读取头文件[转] (2011-12-24 22:59:17) 转载▼ 标签: 杂谈 分类: 各个领域的知识 BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文 ...

  2. c语言头文件中定义全局变量的问题

    c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...

  3. C 语言 .h文件的作用

    C语言头文件的作用 最近在工作当中遇到了一点小问题,关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题.学习C语言已经有好几年了,工作使用也近半年了,但是对于这部分的东西的确还没有深入的 ...

  4. 嵌入式C语言头文件的建立与使用

    如何正确编写 C 语言头文件和与之相关联的 c 源程序文件,这首先就要了解它们的各自功能. 要理解 C 文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程. 一般说来编译器会做以下几 ...

  5. C语言基础文件读写操作

    整理了一份C语言的文件读写件操作代码,测试时打开相应的注释即可. #include <stdio.h> #include <stdlib.h> #include <uni ...

  6. 51单片机C语言学习笔记6:51单片机C语言头文件及其使用

    很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...

  7. C语言头文件

    最近在工作当中遇到了一点小问题,关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题.学习C语言已经有好几年了,工作使用也近半年了,但是对于这部分的东西的确还没有深入的思考过.概念上还是比 ...

  8. C语言判断文件夹或者文件是否存在的方法【转】

     C语言判断文件夹或者文件是否存在的方法   方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所 ...

  9. C语言程序设计--文件操作

    前言 这里尝试与Python对别的方法来学习C语言的文件操作,毕竟我是Pythoner. 文件打开与关闭 Python #因为是和C语言比对,所以不使用with filename = "/e ...

  10. C++标准库头文件名字和C语言头文件名字的区别

    1.C++版本的C标准库头文件,一般是cname,而C语言头文件一般是name.h 2.命名为cname的头文件中定义的名字都是从std中来的,而如果是name.h则不是这样的. 3.与是用name. ...

随机推荐

  1. linux文件系统和目录树的关系

    文件系统是和底层的硬件系统紧密关联的,文件系统相当于是dev(设备或硬件)在Linux上面的显示,如/dev/hdc2 而目录树是逻辑的概念,其可以通过挂载的方式连接文件系统,先用df查看本地的文件系 ...

  2. 2017微软骇客马拉松精彩大回Fun:不一样的Hacker,一Young的Cool

    丹棱君有话说:一年一度激动人心的骇客马拉松大会结束了!这场内部创意大比拼硕果累累,丹棱君准备好了 6 组 Cool 骇客的别 Young 作品——沉浸式销售工具如何能守得“云”开见月明?“骇客马拉松超 ...

  3. Python3中requests库学习01(常见请求示例)

    1.请求携带参数的方式1.带数据的post data=字典对象2.带header的post headers=字典对象3.带json的post json=json对象4.带参数的post params= ...

  4. C# 向服务器上传文件(客服端winform、服务端web)

    转载 首先写客服端,winform模拟一个post提交: /// <summary> /// 将本地文件上传到指定的服务器(HttpWebRequest方法) /// </summa ...

  5. javaSe-常用的类之Calender

    Calendar是java中常用的类,比data类使用更加方便,更能更加强大,好吧多的不用你说了,直接上代码 import java.util.Calendar;//需要引进的包 public cla ...

  6. 【Python图像特征的音乐序列生成】关于数据库到底在哪里下载

    毕竟原网站一个是14年前的一个是16年前的…… 1,http://ifdo.ca/~seymour/nottingham/nottingham.html 这个网站可以下载zip包. 2,https:/ ...

  7. codeforce Gym 100418K Cards (概率,数学)

    题意:麦田的故事,n张牌,取x张牌,记住前x张牌最大的值m,继续往后取,遇到第一张比m大的牌就停下来.求一个x使得最后的牌在整副牌里是最大的期望最大. 假设最大的牌是A,A在各种位置出现的概率就是相等 ...

  8. UVA 12901 Refraction 折射 (物理)

    一道物理题,解个2次方程就行了... 求h最小的情况对应如下图所示 做法不唯一,我想避免精度损失所以在化简的时候尽可能地去避免sqrt和浮点数乘除. 似乎精度要求很低,直接用角度算也可以 #inclu ...

  9. 如何使用TensorFlow Hub和代码示例

    任何深度学习框架,为了获得成功,必须提供一系列最先进的模型,以及在流行和广泛接受的数据集上训练的权重,即与训练模型. TensorFlow现在已经提出了一个更好的框架,称为TensorFlow Hub ...

  10. Spring boot 配置异步处理执行器

    示例如下: 1. 新建Maven 项目 async-executor 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...