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. Z370主板的黑苹果usb3.0驱动安装

    注意每个版本的usb端口代码是不一样的!一般是10.10到10.12 是一个版本,10.13 是一个版本 配合USBInjectAll.kext这个驱动就能顺利驱动你的usb3.0  .如果你是比较新 ...

  2. java 变量 final 小结

    通过查看hashCode发现,变量声明final后,不能修改,上级修改时候,重新获得对象hashCode变化 public static void main(String[] args) { // T ...

  3. Spring_AOP 记录系统关键操作日志用法

    问题: 系统需要记录用户的关键操作日志,以便后期的系统维护,方便的查看问题,及时排除 分析: (1)保存字段:作为一个日志记录功能,首先数据库新建一张表保存用户的操作关键字段, 用户名,ip,操作描述 ...

  4. PowerMock单元测试踩坑与总结

    1.Mock是什么? 通过提供定制的类加载器以及一些字节码篡改技巧的应用,PowerMock 现了对静态方法.构造方法.私有方法以及 Final 方法的模拟支持,对静态初始化过程的移除等强大的功能. ...

  5. Git 使用vi或vim命令打开、关闭、保存文件

    1 vi & vim 有两种工作模式: (1)命令模式:接受.执行 vi & vim 操作命令的模式,打开文件后的默认模式: (2)编辑模式:对打开的文件内容进行 增.删.改 操作模式 ...

  6. 【Java并发.2】线程安全性

    要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享(Shared)和可变的(Mutable)状态的访问. “共享”意味着变量可以由多个线程同时访问,而“可变”则意味着变量的值在其生 ...

  7. iOS开发 横向分页样式 可左右滑动或点击头部栏按钮进行页面切换

    iOS开发 横向分页样式 可左右滑动或点击头部栏按钮进行页面切换 不多说直接上效果图和代码 1.设置RootViewController为一个导航试图控制器 //  Copyright © 2016年 ...

  8. YCSB报": No such file or directory"异常

    异常信息如下: 文件路径.权限都没有问题. 上网遍寻无果,安装流程与官网一致,开始怀疑是环境问题,后来用别人能用的YCSB复制到本地,却能正常运行. 后来修改了ycsb文件,加了个空格,保存退出,再运 ...

  9. 聊一聊跨域,Vue向Django请求数据的一些问题

    1.做前后端分离 前端使用Vue程序,后端使用Django配合rest-framework. 那么前端Vue通过API接口拿到数据会出现跨域的问题,JSONP只是在get中会用到的,所以这里使用cor ...

  10. rest-framework的认证组件

    认证组件 1.登录认证(与组件无关): 首先要在model表内添加用户表和token表: from django.db import models # Create your models here. ...