文章目录

  • 前言
  • 一、什么是文件
    • 1.1 程序文件
    • 1.2 数据文件
  • 二、文件的打开与关闭
    • 2.1 文件指针
    • 2.2 文件的打开与关闭
    • 2.3 文件读写详情表!(重点)
    • 2.4 文件的顺序读写!(重点)
    • 2.5 文件的随机读写
      • 2.5.1 fseek
      • 2.5.2 ftell
    • 2.6 文本文件与二进制文件

前言

文件,我们学习C最后都要与实体进行交互,面向端往往取决于需求,而之前好像一直在写一些仅仅给自己看的小逻辑,并没有完全可以保存下来,比如保存成电脑中文件的样子的文件。
本章主要介绍如何去与自己的计算机进行交互,前几天发布的通讯录并没有记忆功能,每次运行都需要重新输入数据,然后去进行删除、显示、查看等等的操作,本章介绍的就是如果将这些内容保存到自己的电脑中,创建出一个文件

一、什么是文件

  • 一般在程序中我们将文件分为两种:程序文件、数据文件。

1.1 程序文件

  • 源程序文件,后缀为.c

打开可以直接进入编译器

  • 目标文件,在windows上后缀为.obj

这是在我们windows下的文件

  • 可执行程序,windows下后缀为exe

1.2 数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件

这也是本文主要探讨的文件。

二、文件的打开与关闭

2.1 文件指针

一般这种都是在库函数中有声明的,在我所用的vs2013版本里声明在 #include<stdio.h>
一般这类结构体变量都取名为 FILE

2.2 文件的打开与关闭

文件在读写之前先需要打开文件,用完之后要手动关闭文件
例:

//打开文件
FILE * fopen ( const char * filename, const char * mode );
//关闭文件
//打开文件与关闭文件必须成对出现
int fclose ( FILE * stream );

2.3 文件读写详情表!(重点)

文件使用方式 含义 如果指定文件不存在
“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
“a”(追加) 向文本文件尾添加数据 建立一个新的文件
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab”(追加) 向一个二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建立一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件
“rb+”(读写) 为了读和写,打开一个二进制文件 出错
“wb+”(读写) 为了读和写,新建了一个新的二进制文件 建立一个新的文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新的文件

新建文件演示

//引用库函数
#include<stdio.h>
int main()
{FILE* pfw;//建立一个新的文件,之前并不存在的文件pfw=fopen("text.txt","w");//查看是否开辟成功if(pfw==NULL){perror("fopen example::text.txt");teturn;}//关闭文件fclose(pfw);return 0;
}

2.4 文件的顺序读写!(重点)

功能 函数名 适用于
字符输入函数 fgets 所有输入流
字符输出函数 fputc 所有输出流
文本行输入函数 fgets 所有输入流
文本行输出函数 fputs 所有输出流
格式化输入函数 fscanf 所有输入流
格式化输出函数 fprintf 所有输出流
二进制输入 fread 文件
二进制输出 fwrite 文件

选择自己所需要的输出输入格式
实机演示

//之前的通讯录中实现信息的存储
void loadContact(struct Contact* pc)
{//查pcassert(pc);//开辟文件,并准备写入数据FILE* pfw = fopen("data.txt", "rb");if (pfw == NULL){perror("Contact.loadContact::fopen");return;}int i = 0;//依次写入通讯录中每组数据for (i = 0; i <= pc->sz; i++){fread(pc->data + i, sizeof(struct strtact), i, pfw);}//关闭文件fclose(pfw);pfw = NULL;
}

2.5 文件的随机读写

2.5.1 fseek

根据文件指针的位置和偏移量来定位文件指针
fseek

int fseek ( FILE * stream, long int offset, int origin );

**

int main ()
{FILE * pfw;pfw = fopen ( "text.txt" , "wb" );fputs ( "This is an apple." , pfw );fseek ( pfw , 3 , SEEK_SET );fputs ( " sam" , pfw );fclose ( pfw );return 0;
}

2.5.2 ftell

指定读取文件指针时相对于起始位置的偏移量

long int ftell(FILE* stream);

#include <stdio.h>
int main ()
{FILE * pFile;long size;//打开文件pFile = fopen ("myfile.txt","rb");if (pFile==NULL)perror ("Error opening file");else{//读取文件fseek (pFile, 0, SEEK_END);size=ftell (pFile);//关闭文件fclose (pFile);printf ("Size of myfile.txt: %ld bytes.\n",size);}return 0;
}

2.6 文本文件与二进制文件

根据数据的组织形式,数据文件被称为文本文件或者二进制文件。
数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。
如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。
一个数据在内存中是怎么存储的呢?
字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。
如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节(VS2013测试)。

存入的文本文件

什么是文件操作?为什么要有文件操作?相关推荐

  1. asp.net 对xml文件的读写,添加,修改,删除操作

    asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.Componen ...

  2. Java多种方式读文件,追加文件内容,等对文件的各种操作

    一.多种方式读文件内容.1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容 4.随机读取文件内容 import java.io.BufferedReader;import java. ...

  3. 使用文件操作函数实现:文件的复制功能。

    2019独角兽企业重金招聘Python工程师标准>>> //使用文件操作函数实现:文件的复制功能. #include <stdio.h> #include <std ...

  4. Sql Server实用操作-无数据库日志文件恢复数据库两种方法

    数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一 1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启s ...

  5. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  6. php csv文件的读取,写入,输出下载操作详解

    2019独角兽企业重金招聘Python工程师标准>>> php对csv文件的读取,写入,输出下载操作. 代码: <?php $file = fopen('text.csv',' ...

  7. php 语言文件操作,php中目录文件操作详谈

    php中目录文件操作详谈 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,以下是小编整理的php中目录,文件操作详谈,欢迎来 ...

  8. python3 读取.plist文件_Python学习笔记 -5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  9. python3打开文件的代码_Python3 对文件操作

    计算机文件 在计算机系统中,以硬盘为载体存储在计算机上的信息集合称为文件.文件可以是文本文档.图片.声音.程序等多种类型.在编程时经常要对文件进行读写等操作, 从程序员的视角可以把文件理解为是连续的字 ...

  10. python同时对文件进行读写操作-Python实现的读取文件内容并写入其他文件操作示例...

    本文实例讲述了Python实现的读取文件内容并写入其他文件操作.分享给大家供大家参考,具体如下: 文件目录结构,如图: read_file.py是工作文件,file_test.py是读取文件源,wri ...

最新文章

  1. 2019最新版本的PanDownload纯净版,网盘满速下载和搜索神器,追剧和动漫新番必不可少的下载工具【亲测有效】
  2. matlab 正四面体,填隙工具箱,caulking box,音标,读音,翻译,英文例句,英语词典
  3. QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置
  4. 如何版本化你的API?--转
  5. 重装windows后 用live cd修复ubuntu启动gurb
  6. 超细节!从源代码剖析Self-Attention知识点
  7. AI和物联网在零售环境中的长期应用
  8. [精华] 讨论 Setsockopt选项
  9. 信息学奥赛一本通C++语言——1102: 与指定数字相同的数的个数
  10. python---(3)Python安装
  11. Hadoop企业级集群架构 - hadoop安装
  12. 如何使用 volatile, synchronized, final 进行线程间通信
  13. Python 之 变量进阶(理解)
  14. [Reinforcement Learning] 动态规划(Planning)
  15. php创建游戏房间思路,用Swoole来写个联机对战游戏呀!(八)创建游戏房间
  16. CSDN账号登录异常,一个网址帮你找回账号
  17. 绿联USB3.0扩展坞网卡:显示未连接;及Mac共享wifi
  18. 2021系统架构设计师考试知识点
  19. 你好,罗茜——爱要怎么说出口
  20. 外卖分销返佣分佣程序外卖cps小程序返利系统外卖项目优惠券返利

热门文章

  1. 我,32岁,小米公司程序员,揭 开北京“码农”的真实收入
  2. 51单片机(ESP8266模块)
  3. 架构即未来--AKF 可扩展立方体
  4. 批量导出数据库中的表
  5. 由 tpp.c:63: __pthread_tpp_change_priority failed 引发的思考
  6. Python实现ARMA模型
  7. 【python】Dpark源码分析
  8. C/C++ Qt StatusBar 底部状态栏应用
  9. 头歌 Java实训答案 全ac代码 请善用目录功能
  10. C++栈的初始化,入栈,出栈,获取栈顶元素等操作