目录

一:r+ 文件操作

二:w+ 文件操作

三:文件的打开

3.1 CFile.h

3.2 CFile.c

3.3 main.c

四:文件的写入


一:r+ 文件操作

r+ :打开一个存在的文件,示例如下:

#include<stdio.h>
#include<windows.h>  //exit(0)int main()
{FILE *pf=NULL;  //文件指针pf = fopen("menu.txt","r+");//r+  打开一个存在的文件if(pf==NULL){printf("open fail\n");//open failexit(0);    }return 0;
}

二:w+ 文件操作

w+ :文件不存在 则会创建文件

文件存在:覆盖掉 原有文件

w+ 打开文件操作示例如下:

#include<stdio.h>
#include<windows.h>  //exit(0)int main()
{FILE *pf=NULL;  //文件指针pf = fopen("menu.txt","w+");//w+ 文件不存在会创建文件 文件存在:覆盖掉if(pf==NULL){printf("open fail\n");//Press any key to continue 会创建文件exit(0);  }return 0;
}

三:文件的打开

3.1 CFile.h

#ifndef CFILE_H
#define CFILE_H
#include<stdio.h> // 用到FILE结构体//保证打开一个文件  char name[20] char name[ ] char* name
FILE *f_open(char *name);#endif

3.2 CFile.c

#include"CFile.h"//保证打开一个文件
FILE *f_open(char *name)
{FILE *fp = NULL;fp = fopen(name,"r+");if(fp==NULL)  //不存在{fp = fopen(name,"w+"); //就创建          }
}

3.3 main.c

3.3.1 main.c 

w+ 若是文件不存在则会创建文件 【但要确认文件夹存在】

#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"int main()
{FILE *pf=NULL;  //文件指针pf = f_open("menu.txt");  //结果 open success,文件所在地址:0042AAE8// w+ 文件不存在创建文件 但要确认文件夹存在  if(pf==NULL){printf("open fail\n");exit(0);    }else{printf("open success,文件所在地址:%p\n",pf);//open success,文件所在地址:0042AAE8  }return 0;
}

3.3.2 main.c  

文件不存在创建文件 但要确认文件夹存在  以下示例中的data文件夹不存在,打开文件失败

#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"int main()
{FILE *pf=NULL;  //文件指针pf = f_open("data/menu.txt"); //结果 open fail// w+ 文件不存在创建文件 但要确认文件夹存在  if(pf==NULL){printf("open fail\n");//open failexit(0);   }else{printf("open success,文件所在地址:%p\n",pf);   }return 0;
}

解决:自己在工程目录下创建data文件夹

3.3.3 main.c 

文件不存在则会创建文件 但要确认文件夹存在 以下示例中 D盘一定存在,文件打开成功

#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"int main()
{FILE *pf=NULL;  //文件指针pf = f_open("D:/menu.txt"); // 结果open success,文件所在地址:0042AAE8// w+ 文件不存在创建文件 但要确认文件夹存在  if(pf==NULL){printf("open fail\n");exit(0);  }else{printf("open success,文件所在地址:%p\n",pf);//open success,文件所在地址:0042AAE8  }return 0;
}

四:文件的写入

4.1 main.c 

打开文件并写入文件

#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"typedef struct menu_t//定义菜谱结构体
{int id;char name[20];double price;
}MENU_T;int main()
{FILE *pf=NULL;  //文件指针MENU_T menu = {1001,"水煮鱼",59.8};//定义结构体// w+ 文件不存在创建文件 但要确认文件夹存在pf = f_open("D:/menu.txt"); // 结果 open success,文件所在地址:0042AAE8if(pf==NULL){printf("open fail\n");exit(0); }else{printf("open success,文件所在地址:%p\n",pf);   }//光标定位在文件末尾fseek(pf,0,SEEK_END);//1.写入内容的地址 2.写入的大小 3.几块 4.文件指针fwrite(&menu,sizeof(MENU_T),1,pf);fclose(pf);return 0;
}

4.2 main.c  再写入 menu1 至文件中

#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"typedef struct menu_t
{int id;char name[20];double price;
}MENU_T;int main()
{FILE *pf=NULL;  //文件指针MENU_T menu = {1001,"水煮鱼",59.8};MENU_T menu1 = {1002,"水煮肉片",59.8};// w+ 文件不存在创建文件 但要确认文件夹存在pf = f_open("D:/menu.txt"); // 结果open success,文件所在地址:0042AAE8if(pf==NULL){printf("open fail\n");exit(0);    }else{printf("open success,文件所在地址:%p\n",pf);   }//光标定位在文件末尾fseek(pf,0,SEEK_END);//1.写入内容的地址 2.写入的大小 3.几块 4.文件指针fwrite(&menu1,sizeof(MENU_T),1,pf);fclose(pf);return 0;
}

4.3 mian.c 若定位文件开头写入文件则原数据会被覆盖 

fseek(pf,0,SEEK_SET);
#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"typedef struct menu_t
{int id;char name[20];double price;
}MENU_T;int main()
{FILE *pf=NULL;  //文件指针MENU_T menu = {1001,"水煮鱼",59.8};MENU_T menu1 = {1002,"水煮肉片",59.8};MENU_T menu2 = {1003,"水煮田鸡",59.8};// w+ 文件不存在创建文件 但要确认文件夹存在pf = f_open("D:/menu.txt"); // 结果open success,文件所在地址:0042AAE8if(pf==NULL){printf("open fail\n");exit(0);   }else{printf("open success,文件所在地址:%p\n",pf);   }//光标定位在文件开始fseek(pf,0,SEEK_SET);//1.写入内容的地址 2.写入的大小 3.几块 4.文件指针fwrite(&menu2,sizeof(MENU_T),1,pf);fclose(pf);return 0;
}

4.4 main.c  通过偏移量,使原数据不被覆盖

fseek(pf,2*sizeof(MENU_T),SEEK_SET);
#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"typedef struct menu_t
{int id;char name[20];double price;
}MENU_T;int main()
{FILE *pf=NULL;  //文件指针MENU_T menu = {1001,"水煮鱼",59.8};MENU_T menu1 = {1002,"水煮肉片",59.8};MENU_T menu2 = {1003,"水煮田鸡",59.8};// w+ 文件不存在创建文件 但要确认文件夹存在pf = f_open("D:/menu.txt"); // 结果open success,文件所在地址:0042AAE8if(pf==NULL){printf("open fail\n");exit(0);   }else{printf("open success,文件所在地址:%p\n",pf);   }//光标定位在文件开始 偏移量  +向右偏移 -向左偏移fseek(pf,2*sizeof(MENU_T),SEEK_SET);//1.写入内容的地址 2.写入的大小 3.几块 4.文件指针fwrite(&menu,sizeof(MENU_T),1,pf);fclose(pf);return 0;
}

4.5 main.c 再写入一个不覆盖结构体数据至文件中

 fseek(pf,3*sizeof(MENU_T),SEEK_SET); 
#include<stdio.h>
#include<windows.h>  //exit(0)
#include"CFile.h"typedef struct menu_t
{int id;char name[20];double price;
}MENU_T;int main()
{FILE *pf=NULL;  //文件指针MENU_T menu = {1001,"水煮鱼",59.8};MENU_T menu1 = {1002,"水煮肉片",59.8};MENU_T menu2 = {1003,"水煮田鸡",59.8};MENU_T menu3 = {1004,"水煮1",59.8};// w+ 文件不存在创建文件 但要确认文件夹存在pf = f_open("D:/menu.txt"); // 结果open success,文件所在地址:0042AAE8if(pf==NULL){printf("open fail\n");exit(0);   }else{printf("open success,文件所在地址:%p\n",pf);   }//光标定位在文件开始 偏移量  +向右偏移 -向左偏移fseek(pf,3*sizeof(MENU_T),SEEK_SET);//1.写入内容的地址 2.写入的大小 3.几块 4.文件指针fwrite(&menu3,sizeof(MENU_T),1,pf);fclose(pf);return 0;
}

深入学习,文件指针,参考以下文章

文件指针 基础

【C语言】 文件指针编程应用相关推荐

  1. C语言文件指针的基本函数介绍包含了fpoen、fclose、fgetc、fputc、fscanf、fprintf、fgets、fputs、fread、fwrite函数以及文件定位函数.

    一.打开关闭文件 只打开文件   再关闭文件 #include <stdio.h> #include<stdlib.h> main() {FILE *fp;fp = fopen ...

  2. c语言文件指针ab命令,C语言试题,~库(完整版~).doc

    -_ C语言试题库 单项选择 C语言概述 一个C程序的执行是从 A.本程序的MAIN函数开始,到MAIN 函数结束. B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束. C.本程序的MA ...

  3. C语言函数指针编程练习

    前言 以下代码是我自己想的一个情景,并通过编程实现,通过本次编程熟悉了一下函数指针的操作,供大家参考! 函数指针概念的链接如下: https://blog.csdn.net/qq_55648035/a ...

  4. C语言文件指针定位函数fseek与rewind有何区别?

    在glibc中rewind和fseek本质上都是调用了函数_IO_seekoff_unlocked,所以两者是同根同源的,在不考虑返回值的情况下调用哪个都可以,用rewind写起来简单些,用fseek ...

  5. c语言文件.ppt,c语言 文件.ppt

    文 件 梁春燕 华电信息管理教研室 擒蹲骑辛苹淋若沛同绅奋檀秆碍墟焚竿认昔舟泣赏涩秉律赐贬儿喳兢燕棚c语言 文件c语言 文件 主要内容 C文件概述 文件类型指针 文件的读写 文件的定位 出错的检测 上 ...

  6. C语言之文件读写探究(五):rewind、ftell、fseek(文件指针偏移)

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  7. c语言字符串67ASDSff,(指针编程题目.doc

    (指针编程题目 第三阶段(指针) 指针是C语言的精髓,是重点,也是难点,所以我希望你可以好好理解和学好指针,在很多求职面试的时候,经常会用指针来为难学生,Good Luck!! 指针基础知识(理解指针 ...

  8. c语言读取acc文件的采样率,C语言文件操作:打开检查文件指针访问模式

    如何检查已打开的文件指针的访问模式? 所以说一个函数传递一个已经打开的文件指针: //Pseudo code bool PseudoFunction(FILE *Ptr) { if(... Inser ...

  9. c语言 文件f指针,C语言文件选择题

    C语言文件选择题 1.标准库函数fgets(s,n,f)的功能是 A) 从文件f中读取长度为n的字符串存入指针s所指的内存 B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存 C) 从文 ...

  10. c语言编程每日一练教程,每日一练 | C语言之指针

    原标题:每日一练 | C语言之指针 练习导言 学习 C 语言的指针既简单又有趣.通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,想要成为一名优秀的 ...

最新文章

  1. python开源项目贡献_通过为开源项目做贡献,我如何找到理想的工作
  2. 一周的微信公众平台接口开发总结
  3. python 装饰函数
  4. Swift实战-小QQ(第2章):QQ侧滑菜单
  5. mongodb php 删除,MongoDB / PHP:从数组中删除元素
  6. 纠结也好,蛋疼也罢,既然创业了,就把路走好。
  7. 解决移动端遮罩层无法覆盖全部页面问题
  8. 【对讲机的那点事】安装中继台天馈系统如何制作同轴电缆BNC接头?
  9. 虐哭无数人的烧脑刑侦科推理题,程序员一秒解
  10. iphone怎么重启_手机卡死了,又不能拆电池!你会怎么处理?
  11. php中百度编辑器的使用
  12. ubuntu系统安装TP-Link无线网卡驱动
  13. Windows调试技巧工具
  14. 统计学cv值是什么意思_什么是CV值
  15. simplest_ffmpeg_streamer加注释版
  16. 企业应用SaaS行业的B端产品经理,如果提升自己的产品设计能力?
  17. 与MySQL的纠缠(卸载与安装)
  18. [NOIP模拟33]反思+题解
  19. 同步练习(Java SE(十二))
  20. Element表格内容不垂直居中和内容换行显示

热门文章

  1. ☆【平衡二叉树】魔兽争霸
  2. mysql分页limit (currentPage-1)*pageSize,pageSize
  3. html让网页在手机端自动横屏,Css实现手机端页面强制横屏的方法示例
  4. matlab脉冲压缩,雷达线性调频脉冲压缩的原理及其matlab仿真
  5. 个人晋升演讲ppt_晋升面试ppt自我展示演讲稿
  6. POI删除空白行 代码和其他用法(将会持续更新)
  7. Leetcode 1284 Minimum Number of Flips to Convert Binary Matrix to Zero Matrix
  8. 浏览器transform介绍
  9. Zigbee之旅(五):几个重要的CC2430基础实验——串口通信
  10. Android获取分辨率和像素密度