c文件重点知识总结

程序文件
数据文件--->分文本文件(ASCII文件)和映像文件(二进制文件) 。区分是用记事本打开后能否看懂。

用二进制文件读写花费时间少,因为用文本文件需要有一个转换的过程,

文件缓冲区;输入文件缓冲区--->磁盘文件中的数据向内存读入时,需要先存到缓冲区,待这个缓冲区装满后一起被送到内存中。
输出文件缓冲区--->内存数据写入磁盘文件中时,同上。

文件信息区:每个被使用的文件,在内存中自动开辟一个文件信息区,用来保存文件的信息。这些信息是存在结构体变量(系统自动生成)中的,
取名为FILE,用文件时用FILE *fp;定义一个指向文件信息区的指针变量,用来使用该文件。也就是说,通过该指针,能够找到与之相关联的文件。
***应该注意,这个指针不是指向外部介质上的数据文件的开头,而是指向文件信息区的开头。

文件函数:
一、打开与关闭文件:
1.fopen(文件名,使用文件方式);
---->成功返回文件信息区的首地址,失败返回NULL;
文件名可以是字符串常量,要用双撇号括起来。如“file1.dat”。可以指定路径,由于\在C语言中是转义字符的前导,用\\来指示路径。
如 ”F:\\aa\\file1.dat“就是说打开F盘的aa文件夹下的file1文件。如果不指定,文件一般会自动放在源程序文件相同的文件夹下(依编译系统而异)。

文件使用方式 基本的有6种。
“r”:只读。为了读取文本文件中的数据而打开文件。如果文件不存在,会返回NULL值。文件位置标记在文件开头。
“w”:只写。为了向文本文件中写入数据以保存。如果文件不存在,会试图自动创建一个你命名的文件。一般都会试图成功。文件位置标记在文件开头。应该注意,如果你要写而打开一个文件,该文件已存在,系统会删除该文件再重新建立一个同名文件,源文件中的数据会丢失。
“a”:追加。向文本文件的末尾追加数据,可写,原数据不消失。文件位置标记在文件数据末尾。
“rb”,“wb”,“ab" 分别对应二进制文件。

2.fclose(文件名)

因为数据是先存在缓冲区里的。所以程序结束,你没close掉文件,缓冲区里的信息会丢失。(虽然大多数编译系统不会出现这种情况,但应该避免)。因而,程序结束之前我们要关掉文件,强制使得缓冲区里的数据保留到文件中。

二、顺序读写数据文件:
1.读写字符
1)fgetc(fp);从fp指向的文件中读入内存一个字符。成功返回该字符,失败返回文件结束标志EOF(-1);
2)fputc(ch,fp):把字符ch写入文件fp中。成功返回该字符,失败返回EOF。

2.读写字符串
1)fgets(str,n,fp);从fp中读取一个长度为n-1的字符串(因为要留一个\0),存放到字符数组str中。成功返回str地址,失败返回NULL;
2)fputs(str,fp); 把字符数组str写到fp中。成功返回0,失败返回非0值。
应该注意,当向文件中写入字符串时,每当写入一个字符串,营房写入一个\n来区分各个字符串。

3.向二进制文件读写一组数据、或者说一块数据:
1、fread(buffer,size,count,fp) 从fp中读入count个size个字节的数据,存储到一个数组中,这个数组的地址是buffer。读成功返回count值。
2、fwrite(buffer,size,count,fp) 把buffer地址指向的数组中的数据,取count个size个字节,存到fp中。成功返回count。
写的一般形式是这样的:
if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
{
printf("file wrute error!\n");
exit(0);
}
feof(fp);检查上一次读写的状态,默认为0,读写成功返回1,else 返回0。

【C/C++】c文件重点总结的更多相关文章

  1. 个人对maven pom.xml文件的理解

    如:一个项目可能需要引用另外两个项目的类.. 如 项目cswebbefore  需要引用cswebservice 和reports 这三个项目都有各自的pom.xml文件 cswebservice 项 ...

  2. xml 引入约束文件

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  3. python查看文件夹下所有文件

    实现查看所有文件,重点在于文件夹下又有文件夹时怎样处理,这里通过os模块来解决. 方法一 : 通过递归实现遍历所有文件夹 import os def func(path): for i in os.l ...

  4. C#读取DLL文件获取所有类

    说明 调用Web.dll 文件,获取其中的所有的WebService 参考 https://blog.csdn.net/huoliya12/article/details/78873123 流程 使用 ...

  5. Robot Framework(10)- 使用资源文件

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 啥是资源文件 资 ...

  6. cmake指定程序输出目录和库文件输出目录和拷贝文件

    概述 本文样式环境: win10+cmake 3.18 本文将介绍使用CMAKE配置项目输出目录和 LIbrary项目的输出目录 本文将介绍 cmake的file函数的基础用法之拷贝文件 重点, 这些 ...

  7. python基础知识(四)

    摘要:主要涉及lambda表达式.python内置函数(open文件重点).冒泡排序 一.lambda表达式 适用于创建简单函数,也叫匿名函数, 函数名 = lambda 参数 : 返回值 funct ...

  8. py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+python2.7环境搭建记录

    第一次写博客,以此纪念这几天安装caffe,跑faster-rcnn的血泪史.在此特别感谢网络各路大神,来自全球各地,让我能从中汲取营养,吸取经验,总结规律. faster-rcnn分为matlab版 ...

  9. DBA_Oracle性能优化的基本方法概述(方法论)

    2014-12-18 Created By BaoXinjian

随机推荐

  1. 01-Jenkins-Master节点安装

    Jenkins安装前需要JDK8,下载最新版本的Jenkins LTS 2.150.防止下载缓慢可以通过清华源进行下载. [root@node1 ~]# wget https://mirrors.tu ...

  2. 【C#复习总结】垃圾回收机制(GC)2

    理解C#垃圾回收机制我们首先说一下CLR(公共语言运行时,Common Language Runtime)它和Java虚拟机一样是一个运行时环境,核心功能包括:内存管理.程序集加载.安全性.异步处理和 ...

  3. Rollup处理并打包JS文件项目实例

    关于Rollup rollup是一款用来es6模块打包代码的构建工具(支持css和js打包).当我们使用ES6模块编写应用或者库时,它可以打包成一个单独文件提供浏览器和Node.js来使用. 它的优点 ...

  4. Lambda表达式介绍(转)

    刚开始学lambda,lambda与linq的联合使用. Lambda表达式实际上是一个匿名函数.它包含表达式和语句,常用于创建委托或表达式目录树类型.所有Lambda表达式都是用Lambda运算符- ...

  5. WCF系列教程之WCF服务配置工具

    本文参考自http://www.cnblogs.com/wangweimutou/p/4367905.html Visual studio 针对服务配置提供了一个可视化的配置界面(Microsoft ...

  6. 《React Native 精解与实战》书籍连载「React 与 React Native 简介」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  7. 蛙蛙推荐: TensorFlow Hello World 之平面拟合

    tensorflow 已经发布了 2.0 alpha 版本,所以是时候学一波 tf 了.官方教程有个平面拟合的类似Hello World的例子,但没什么解释,新手理解起来比较困难. 所以本文对这个案例 ...

  8. 比较ASP.NET和ASP.NET Core[经典 Asp.Net v和 Asp.Net Core (Asp.Net Core MVC)]

    ASP.NET Core是.与.Net Core FrameWork一起发布的ASP.NET 新版本,最初被称为ASP.NET vNext,有一系列的命名变化,ASP.NET 5.0,ASP.NET ...

  9. java 浅克隆 深克隆

    对象的克隆是java的一项高级技术,他可以根据给定的对象,获得与其完全相同的另一个对象. 1.浅克隆主要是复制对象的值 2.深克隆:当类存在聚合关系的时候,克隆就必须考虑聚合对象的克隆,可以复制引用类 ...

  10. POJ - 1177 线段树

    POJ - 1177 扫描线 这道题也算是一道扫描线的经典题目了. 只不过这道题是算周长,非常有意思的一道题.我们已经知道了,一般求面积并,是如何求的,现在我们要把扫描线进行改造一下,使得能算周长. ...