1、文件操作的步骤:

①  打开文件 -----将应用程序和文件建立关联

②  读、写文件操作

读操作:  将文件中的数据加载到程序

写操作:  将程序中的数据保存到文件

③  关闭文件

2、通过函数操作文件

2.1 打开文件

FILE *fopen(const char *pathname, const char *mode);

函数功能:  打开文件

参数说明:

pathname:文件路径

mode:打开模式  (文本文件操作的方式: r  w   a, 二进制文件操作的方式:rb  wb  ab)

返回值:  成功返回结构体的起始起始
                失败返回NULL

注意:

①  以读的方式打开文件,如果文件不存在,打开失败!

②  以写的方式打开文件,如果文件不存在,创建文件,如果文件存在,清空文件中所有的内容

③  以追加的方式打开文件,如果文件不存在,创建文件, 如果文件存在,不清空内容,文件指针指向内容的最后

 FILE *fp = NULL;//fp = fopen("./data.txt", "rb");//fp = fopen("./data.txt", "wb");fp = fopen("./data.txt", "ab");if(NULL == fp)  //打开文件失败{perror("fopen");return -1;}

2.2 读文件

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

函数说明:  以二进制的方式读文件

参数说明:

ptr:存放读数据内存的起始地址

size :数据的单位大小

nmemb:  读数据的个数

stream : 文件指针

返回值:返回值等于0  ,表示到达文件结尾!!!!

 int data[100];int temp;int i = 0;int ret;while(1){ret = fread(&temp, sizeof(int), 1, fp);if(0 == ret)  //说明到达文件结尾{break;}data[i] = temp;i ++;}

2.3 写文件

size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

函数功能:  以二进制的方式写文件

参数说明:

ptr:  写数据的起始地址

size:  数据的单位大小

nmemb:数据的个数

stream:  文件指针

返回值:返回成功写进去的个数

int data[5] = {1,2,3,4,5};
int ret;ret = fwrite(data, sizeof(int), 5, fp);if(ret<5){perror("fwrite");return -1;}

2.4 关闭文件

fclose(FILE *stream);
参数说明:stream -- 这是指向 FILE 对象的指针

3、综合练习

定义结构体, 表示学生的基本信息:  学号   姓名   成绩

要求:

1、从键盘输入5个学生的信息, 存储到文件

2、从文件中读取所有学生的信息, 输出打印

3、读写操作封装成两个函数

#include <stdio.h>struct student
{int num;char name[32];double score;
};
//成功: 0
//失败: -1
int write_file(struct student s[], int n)
{FILE *fp = NULL;//1、打开文件  fp = fopen("./stu.txt", "wb");if(NULL == fp){perror("fopen");return -1;}   //2、写文件 int ret;for(int i=0; i<n; i++){ret = fwrite(&s[i], sizeof(struct student), 1, fp);if(ret<1){perror("fwrite");fclose(fp);return -1;}}//3、关闭文件fclose(fp);return 0;
}//成功: 返回正确读到的学生个数
//失败:  返回-1
int read_file(struct student s[], int n)
{//1、open   fileFILE *fp = NULL;fp = fopen("./stu.txt", "rb");if(NULL == fp){perror("fopen");return -1;}//2、read  fileint i = 0;int ret ;
#if 0while(1){ret = fread(&s[i], sizeof(struct student), 1, fp);if(0 == ret){break;}i ++;}
#endifwhile(fread(&s[i], sizeof(struct student),1, fp)){i ++;if(i > n){printf("内存已经越界!");fclose(fp);return -1;}}//3、close  filefclose(fp);return i;}int main01()
{struct student s[5] = {{1001, "zhangsan1", 90},{1002, "zhangsan2", 89},{1003, "zhangsan3", 78},{1004, "zhangsan4", 88},{1005, "zhangsan5", 99}};write_file(s, 5);return 0;
}int main()
{struct student s[100];int count;count = read_file(s, 100);for(int i=0; i<count; i++){printf("%d\t%s\t%.2lf\n", s[i].num, s[i].name, s[i].score);}return 0;
}

嵌入式(C语言文件操作)相关推荐

  1. C语言文件操作解析(二)【转载】

    http://www.cnblogs.com/dolphin0520/archive/2011/10/05/2199598.html C语言文件操作解析(二) C语言中对文件进行操作必须首先打开文件, ...

  2. C语言文件操作解析(二)

    C语言文件操作解析(二) C语言中对文件进行操作必须首先打开文件,打开文件主要涉及到fopen函数.fopen函数的原型为 FILE* fopen(const char *path,const cha ...

  3. C语言文件操作函数大全(看到总结的真的很好,就转载贡献给大家了)

    C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * st ...

  4. c语言计算文件摘要值,c语言文件操作摘要.ppt

    c语言文件操作摘要 第十章 文件 10.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件处理方法 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区 非 ...

  5. C语言文件操作解析(一)

    C语言文件操作解析(一) 在讨论C语言文件操作之前,先了解一下与文件相关的东西. 一.文本文件和二进制文件 文本文件的定义:由若干行字符构成的计算机文件,存在于计算机系统中.文本文件只能存储文件中的有 ...

  6. c语言全文件操作函数,C语言文件操作函数大全

    C语言 文件操作函数大全 C语言文件操作函数 2007-10-17 19:21 13.1C语言文件 1,两种文件存取方式(输入,输出方式) 顺序存取 直接存取 2,数据的两种存放形式 文本文件 二进制 ...

  7. C语言文件英文,c语言文件操作(国外英文资料).doc

    c语言文件操作(国外英文资料) 韧仔欠鳖佳刀寺男拒姚友畔庶炳告舞漾容验熬销避暇庆茅奠哑栓障于筏茸兔厘万寿日击悯汤糠毛塞丈河汤忧寸绞忧择曹酪泛磋牵卧国叛株咙麓独檀烈钎熬酪夫栓线夹蔗屏矾疙陋柱狂茅悬匈队八 ...

  8. 基于存储的C语言文件操作常规问题分析(文本文件与二进制文件)

    基于存储的C语言文件操作常规问题分析(文本文件与二进制文件) 问题描述 文本文件与二进制文件 数据写入文本乱码问题 fopen和open 流式文件操作常用函数 直接I/O文件操作常用函数 问题描述 我 ...

  9. c语言创建文件存放,C语言文件操作

    C语言文件操作 常见硬件设备所对应的文件 文件 硬件设备 stdin 标准输入文件,一般指键盘:scanf().getchar() 等函数默认从 stdin 获取输入. stdout 标准输出文件,一 ...

  10. ❤️学懂C语言文件操作读这篇就够了(万字总结,附习题)❤️

    目录 ​​​ 一,写在前面 二,为什么使用文件 1,原因 2,数据流 3,缓冲区(Buffer) 4,C语言中带缓冲区的文件处理 5,文件类型 6,文件存取方式 三,什么是文件 1,程序文件 2,数据 ...

最新文章

  1. 怎么点亮段码屏_手机被人偷了,支付宝里的钱被转走了,遇到这种情况该怎么办?...
  2. 使用牛刀云开发微信小程序(问题集锦)
  3. IBASE的hierarchy结构
  4. 亚马逊面试有几轮_经过几个月的Google面试准备,我被亚马逊录用
  5. RabbitMQ的三大交换器详解
  6. mipi差分信号原理
  7. 团队管理心得--建团队,管事理人
  8. ug添加imachining变量_UG变量设置)
  9. matlab 雷达工具箱,Matlab:8个实用的Matlab工具箱
  10. 2016 CCF-CSP 计算机职业资格认证考试 解题报告
  11. 冲刺IPO:Soul在深红市场打开的社交元宇宙
  12. 网络基础之静态路由配置及网络问题排查思路
  13. 7-15 福到了 c语言,7-7 福到了 (15分)
  14. 理赔实录|有了「安心赔」,理赔不再愁
  15. 下载FATSQ,读取10条序列并计算每条序列的长度和GC含量
  16. CSS语义-icont+text
  17. github上的html项目怎么运行,GitHub搭建简单的项目“Hello HTML”
  18. 预测混合模式发展前景计算机,基于混合模式的网络流量分类优化-计算机技术专业论文.docx...
  19. linux r base core,安装最新版本的R-base
  20. 函数的定义和形参/实参

热门文章

  1. 《一个人上东京》读后感
  2. 《iTOP-3568开发板快速测试手册》第6章 Ubuntu系统功能测试 (5)
  3. 【OpenCV】 n 点透视问题数学建模及其求解(P3P方法)
  4. 企业为什么要开通银企直联_胜意费控云 | 什么是银企直联,它有什么作用?
  5. 整洁的代码 VS 肮脏的代码?
  6. 20个经典的Java代码片段
  7. 计算机硬盘与软盘知识资料,计算机软盘和硬盘词汇
  8. python readline()方法详解
  9. 接口调试插件RESTED使用post的方法
  10. python安装教程(2020最新)