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. 【强化学习】用pandas 与 numpy 分别实现 q-learning, saras, saras(lambda)算法

    本文作者:hhh5460 本文地址:https://www.cnblogs.com/hhh5460/p/10159331.html 特别感谢:本文的三幅图皆来自莫凡的教程 https://morvan ...

  2. Tomcat优化之容易集合经验

    Tomcat优化1. 如何加大tomcat连接数在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有: maxThreads : t ...

  3. Winform开发框架中的综合案例Demo

    在实际的系统开发中,我们往往需要一些简单的的案例代码,基于此目的我把Winform开发框架中各种闪光点和不错的功能,有些是我们对功能模块的简单封装,而有些则是引入了一些应用广泛的开源组件进行集成使用, ...

  4. Netty入门(二)之PC聊天室

    参看Netty入门(一):Netty入门(一)之webSocket聊天室 Netty4.X下载地址:http://netty.io/downloads.html 一:服务端 1.SimpleChatS ...

  5. 重构JS代码 - 让JS代码平面化

    js中的嵌套函数用的很多,很牛叉,那为何要平面化? 易懂(自己及他人) 易修改(自己及他人) 平时Ajax调用写法(基于jQuery) $.post('url', jsonObj, function ...

  6. 最新版XCoder 的使用方法

    1.项目中,新建一个类库.名字随意,我取名:XCoder 2.右键 > 管理nuget程序包:搜索 XCode 并安装 3.在项目中新建:data.project.xml 的xml文件,并写入数 ...

  7. python--map()、reduce()

    map()和reduce()是一种在处理大数据时的重要思想,在平时也可以利用.在python中内置了这两个方法,map取映射的意思,reduce取归纳的意思. 一.map() map(func, ls ...

  8. MYSQL中SUM (IF())

    今天一个朋友突然给我发过来一个sql语句,一下子问住我了. 我想,这种语法木有见过呀.我就查了查,才明白什么意思,原来是mysql里面的用法. SUM(IF(`hosts`.state = 0, 1, ...

  9. 同步和异步概念(由DZW前端框架引发的百度地图api无法加载问题总结)

    首先概念: 在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去:异步是指进程不需要一直等下去,而是继续 ...

  10. Telnet服务器和客户端请求处理

    Telnet服务器和客户端请求处理 本文的控制台项目是根据SuperSocket官方Telnet示例代码进行调试的,官方示例代码:Telnet示例. 开始我的第一个Telnet控制台项目之旅: 创建控 ...