C语言的文件处理
所谓“文件”一般指存储在外部介质上数据的集合。根据数据的组织形式,可分为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语言的文件处理的更多相关文章
- BMP头文件格式以及C语言读取头文件【转】
BMP头文件格式以及C语言读取头文件[转] (2011-12-24 22:59:17) 转载▼ 标签: 杂谈 分类: 各个领域的知识 BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文 ...
- c语言头文件中定义全局变量的问题
c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...
- C 语言 .h文件的作用
C语言头文件的作用 最近在工作当中遇到了一点小问题,关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题.学习C语言已经有好几年了,工作使用也近半年了,但是对于这部分的东西的确还没有深入的 ...
- 嵌入式C语言头文件的建立与使用
如何正确编写 C 语言头文件和与之相关联的 c 源程序文件,这首先就要了解它们的各自功能. 要理解 C 文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程. 一般说来编译器会做以下几 ...
- C语言基础文件读写操作
整理了一份C语言的文件读写件操作代码,测试时打开相应的注释即可. #include <stdio.h> #include <stdlib.h> #include <uni ...
- 51单片机C语言学习笔记6:51单片机C语言头文件及其使用
很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...
- C语言头文件
最近在工作当中遇到了一点小问题,关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题.学习C语言已经有好几年了,工作使用也近半年了,但是对于这部分的东西的确还没有深入的思考过.概念上还是比 ...
- C语言判断文件夹或者文件是否存在的方法【转】
C语言判断文件夹或者文件是否存在的方法 方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所 ...
- C语言程序设计--文件操作
前言 这里尝试与Python对别的方法来学习C语言的文件操作,毕竟我是Pythoner. 文件打开与关闭 Python #因为是和C语言比对,所以不使用with filename = "/e ...
- C++标准库头文件名字和C语言头文件名字的区别
1.C++版本的C标准库头文件,一般是cname,而C语言头文件一般是name.h 2.命名为cname的头文件中定义的名字都是从std中来的,而如果是name.h则不是这样的. 3.与是用name. ...
随机推荐
- Redis list(列表)
Redis列表是简单的字符串列表,列表是有序的,列表中的元素可以重复. 可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (40多亿). 1.lpus ...
- ribbon hystrix仪表盘
Circuit Breaker: Hystrix Dashboard (断路器:hystrix 仪表盘) 基于service-ribbon 改造下: pom.xml加入: <dependency ...
- es6+字符串string的新增方法函数
String.includes("xxx") 返回true/false [es5的字符串查找方法:String.indexOf() ] String.startsWit ...
- LeetCode Happy Number 开心数字
题意: 给出一个整数n,判断其是否为幸运数. 规则是,将n按十进制逐位拆出来后,每个位各自进行取平方,再将这些平方数求和作为新的数字n.若最后n=1,就是幸运数. 思路: 计算例子:n=47,接着n= ...
- 【Python图像特征的音乐序列生成】数据集制作的一些tricks
关于数据集的制作,我决定去掉很多不必要的东西,比如和弦,于是我选择了melody部分的旋律. 有了midi文件,我现在要abc序列,所以我要通过midi2abc转换一下文件. 批处理程序效果如下: 文 ...
- 【Apache】HTTPD 2.4.37 + OpenSSL 1.1.1 企业级安全配置(含TLS修复)
我为什么要写这一篇稿子? 为了避免更多的运维.开发者没能实现企业的信息安全,我将共享出我个人的HTTPD的安全修复(2.2和2.4差不太多就看2.4就好) 起因:我为某M工作,但因某M和testin合 ...
- rhythmbox插件开发笔记3:安装 makefile && schema && po
本篇主要讲通过makefile方式来安装rhythmbox插件的相关知识. makefile 如果makefile是什么,请自行谷歌 参考了pandasunny同学的rhythmbox-baidu-m ...
- Redis的安装以及spring整合Redis时出现Could not get a resource from the pool
Redis的下载与安装 在Linux上使用wget http://download.redis.io/releases/redis-5.0.0.tar.gz下载源码到指定位置 解压:tar -xvf ...
- 在Vue将第三方JS库封装为组件使用
第三方JS库地址:https://github.com/inorganik/CountUp.js 使用NPM进行安装: npm install --save countup 根据官方回答,CountU ...
- USACO08FEB Hotel
题目传送门 线段树维护区间 线段树结构体 struct zzz{ int l,r,mi; //l为以左端点的为起点的最长子串 //r为以右端点为终点的最长子串 //mi是区间内部的最长子串 }tree ...