目录

一,前言

二,基础知识

FILE结构

FILE文件操作

一,操作文件

1.fopen函数

打开文件的方式:

2.fclose函数

二,读写文件

1.fgets函数

2.fputs函数

3.fread函数

4.fwrite函数

5.fprintf函数

6.fscanf函数


一,前言

孔子曰:“学而不思则惘,思而不学则殆。”现将所了解的C语言FILE相关操作·知识汇总如下,请多多指教!

二,基础知识

FILE结构

struct _iobuf {char *_ptr;               // 文件输入的下一个位置int   _cnt;                // 当前缓冲区位置char *_base;          // 文件起始位置int   _flag;           // 文件标志int   _file;         // 文件有效性验证int   _charbuf;           // 当前缓冲区状况int   _bufsiz;            // 缓冲区大小char *_tmpfname;        // 临时文件名};typedef struct _iobuf FILE;     //别名FILE,可以直接用

FILE文件操作

一,操作文件

1.fopen函数

打开数据文件

fopen(_In_z_ char const* _FileName,_In_z_ char const* _Mode);

即fopen(需要打开文件的文件名,打开文件的方式)

需要打开文件的文件名:

需要和exe文件在同一目录下,或者写出相对路径或绝对路径

打开文件的方式:

1.“r” 以"读"的方式打开一个文本文件(只能读)。
2.“r+” 在"r"的基础下增加了"写"。
3.“rb” 以"读"的方式打开一个二进制文件(只能读)。
4.“rb+” 在"rb"的基础下增加了"写"。
5.“w” 以"写"的方式创建一个文本文件,
如果这个文件已经存在,就会覆盖原来的文件。
6.“w+” 在"w"的基础下增加了"读"。
7.“wb” 以"写"的方式创建一个二进制文件。
8.“wb+” 在"wb"的基础下增加了"读"。
9.“a” 以"尾部追加"的方式打开一个文本文件(只能写)。
10.“a+” 在"a"的基础下增加了"读"。
11.“ab” 以"尾部追加"的方式打开一个二进制文件(只能写)。
12.“ab+” 在"ab"的基础下增加了"读"。

2.fclose函数

在文件操作完成后需将文件关闭

fclose(_Inout_ FILE* _Stream);

即fclose(文件名)

二,读写文件

1.fgets函数

按规则读取文件

// 成功返回缓冲区指针,失败返回 NULL。
fgets(_Out_writes_z_(_MaxCount) char* _Buffer,//接收文件内容的缓冲区指针    _In_                      int   _MaxCount,//读取的字节数_Inout_                   FILE* _Stream//文件对象指针);

示例:

拓展:可以以多少字节为一行读取

FILE* f = fopen("Hello.txt", "r");char buf[2048];while (fgets(buf, 2, f)) {
//buf[2048]即每行不超过2048个字节,2表示每次只读2个字节,f为文件指针cout << buf << endl;}

2.fputs函数

将字符串写入文件

// 成功返回非负值,失败返回 EOF(-1)
fputs(_In_z_  char const* _Buffer,// 要写入的字符串_Inout_ FILE*       _Stream // 指向 FILE 对象的指针);

示例:

FILE* f = fopen("Hello.txt", "r+");
fputs("what do you mean?",f);

3.fread函数

fread(_Out_writes_bytes_(_ElementSize * _ElementCount) void*  _Buffer,//读取的数据存放的内存的指针_In_                                             size_t _ElementSize,//每次读取的字节数  _In_                                             size_t _ElementCount,//读取次数  _Inout_                                          FILE*  _Stream//要读取的文件的指针);

4.fwrite函数

fwrite(_In_reads_bytes_(_ElementSize * _ElementCount) void const* _Buffer,//要输出数据的地址_In_                                           size_t      _ElementSize,//每次写入的字节数_In_                                           size_t      _ElementCount,//写入次数_Inout_                                        FILE*       _Stream//目标文件指针);

示例:

typedef struct book {char name[20];char author[20];
};
int main(){
book a;
FILE* f;
f = fopen("Hello.txt", "a");
fread(&a,sizeof(struct book), 1, f);
cin >> a.name >> a.author;
fwrite(&a, sizeof(struct book), 1, f);
fclose(f);
}

5.fprintf函数

fprintf(_Inout_                       FILE*       const _Stream,//文件指针_In_z_ _Printf_format_string_ char const* const _Format,//要写入的字符串...)

6.fscanf函数

fscanf(_Inout_                      FILE*       const _Stream,//文件指针_In_z_ _Scanf_format_string_ char const* const _Format,//读取字符串...)

示例:通过fprint,fscanf写书的入馆信息

//fprintf() 成功返回写入的字符的个数,失败则返回负数。
//fscanf() 返回参数列表中被成功赋值的参数个数。
#define _CRT_SECURE_NO_DEPRECATE
//不声明可能会报错,无碍
#include<stdio.h>
#include <stdlib.h>
#define N 2struct book{char name[10];int num;int year;
} booka[N], bookb[N], *pa, *pb;int main(){FILE *fp;int i;pa=booka;pb=bookb;if( (fp=fopen("D:\\Hello.txt","wt+")) == NULL ){puts("Fail to open file!");exit(0);}//从键盘读入数据,保存到bookaprintf("输入数据:书名,数量,入馆年份:\n");for(i=0; i<N; i++,pa++){scanf("%s %d %d", pa->name, &pa->num, &pa->year);   }pa = booka;//将booka中的数据写入到文件for(i=0; i<N; i++,pa++){fprintf(fp,"%s %d %d\n", pa->name, pa->num, pa->year);   }//重置文件指针rewind(fp);//从文件中读取数据,保存到bookbfor(i=0; i<N; i++,pb++){fscanf(fp, "%s %d %d\n", pb->name, &pb->num, &pb->year);}pb=bookb;//将bookb中的数据输出到显示器for(i=0; i<N; i++,pb++){printf("%s  %d  %d\n", pb->name, pb->num, pb->year);}fclose(fp);return 0;
}

C语言FILE详解(COME ON)相关推荐

  1. 【C语言】C语言FILE详解

    1 C语言file类,在stdio.h 头文件中,FILE类是一个结构体:定义如下: struct _iobuf {         char *_ptr;         int   _cnt;   ...

  2. C语言之详解#ifdef等宏

    C语言之详解#ifdef等宏 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是&qu ...

  3. c语言 宏教程 pdf,C语言之详解_ifdef等宏.pdf

    C 语言之详解 #ifdef 等宏 指令用途 #空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 ...

  4. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  5. Python的C语言接口 - 详解官方文档

    Python的C语言接口 - 详解官方文档 索引 Python的C语言接口 - 详解官方文档 介绍 / Introduce 代码标准 / Coding Standards 包含文件 / Include ...

  6. 归并排序过程实现c语言,C语言归并排序详解

    C语言归并排序详解 发布日期:2015-12-31 11:16 来源: 标签: 编程语言 C教程 C语言归并排序 C语言归并排序算法 本章我们主要学习C语言实现排序算法之归并排序,对归并排序的原理及实 ...

  7. python traceback_Python语言Traceback详解

    本文主要向大家介绍了Python语言Traceback详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 刚接触Python的时候,简单的异常处理已经可以帮助我们解决大多数问题, ...

  8. python语言编程基础-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  9. python语言入门m-Python语言入门详解!快速学成Python!

    今日主题 "Python语言入门详解" 近两年来,Python语言借着数据科学和人工智能的"东风"成为了最流行的编程语言--街头巷尾人们口口相传.同时,Pyth ...

最新文章

  1. 5GS 协议栈 — PFCP 协议 — PDR 报文检测规则
  2. 程序员要学会读源代码
  3. 【无码专区12】子集和(背包dp)
  4. turtle fillcolor_使Python中的turtle模块画图两只小羊
  5. abb智能控制系统_ABB助力国网冀北电力打造虚拟电厂
  6. PyTorch JIT与TorchScript
  7. 牛客网——奥运排序问题
  8. 解析markdown_利用 markdown 生成页面实践
  9. js文件中使用jstl或者其他标签
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的新闻发布系统
  11. zynq开发系列3:GPIO连接MIO通过按键控制LED灯亮起
  12. 洛谷P1141 01迷宫
  13. nuget包循环引用问题
  14. 《Microduino实战》——2.2 兼容Arduino系列产品
  15. Winserver普通域用户账户无权限启动停止系统服务(启动停止按钮是灰色)
  16. java飞机大战boss素材_java小游戏飞机大战 源代码以及素材
  17. web - 前端特效和博客
  18. matlab中功率因数怎样测量,如何测量功率因数?功率因数测量方法
  19. python做视频剪辑_用python进行视频剪辑
  20. Java Web实现用户注册页面的提交

热门文章

  1. ISP简介(stm32)
  2. IRPT_TAS用户协议
  3. Nginx和Zuul的区别与关联
  4. 代理模式与三种方式实现SpringAOP!
  5. ARP 应用——检测IP地址冲突
  6. centOs7 安装docker 镜像
  7. python编写word_如何使用Python来编辑word
  8. 如何获取Certificate fingerprint (SHA1) key 以及 MD5 certification key
  9. 如果黑客转行干活动策划,我再也不怕开会睡着了
  10. 什么是真正的格局?遇到烂人不计较,碰到破事别纠缠