当前位置: 首页 > news >正文

codeblock图形界面编程(十)文件操作

目录

  • codeblock图形界面编程(十)文件操作
    • C语言的文件管理
      • 文件指针
      • 文件打开
    • 文件关闭
      • 文件读
      • 文件写
    • 图形界面的文件操作管理
      • 配置libcomdlg32.a库
      • 系统功能的实现

codeblock图形界面编程(十)文件操作

打开我们的计算机,无论是花花绿绿的图片、动感激烈的视频或者是各种各样的资料、数据,要想在电脑中存储、复用,无不是以文件形式保存在计算机硬盘中。所以,应用程序设计中,文件操作是必不可少的,它可以让我们把目标内容、数据存储到计算机硬盘上,以供下次使用或者用于交流、传输或再加工等等,这样,即使我们的app停止了运行,或者在大型协作任务中退出了,数据仍然保留,下次我们可以再次从电脑中读取数据内容,继续工作,通过这些文件操作,使得我们实现了数据的持久化,信息的交流、存储或再加工就有了基础。

C语言的文件管理

文件指针

C编译器中,每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,通过一个FILE的指针来维护这个FILE结构的变量,实例如下:

	FILE* pf;//文件指针变量

文件打开

pf建立了指针和文件的联系后,使用fopen函数来打开文件,fopen函数原型:

	//打开文件函数:
	FILE *fopen( const char *filename, const char *mode );

在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图:

在这里插入图片描述

文件关闭

利用fclose来关闭文件。和fclose函数原型为:

	//关闭文件函数:
	int fclose( FILE *stream );

文件读

我们使用文件的目的无外乎对文件的读和写,常用的函数有:

  1. fgetc函数,函数原型:

     int fgetc( FILE *stream );
    

该函数作用是从文件流或者标准输入流stdin(键盘)中读取一个字符。正常读取返回该字符的ASCII码。读取错误或者读取结束则会返回EOF,EOF是-1,因此其是用int类型返回值!

2 fgets() 获取一行,其原型定义为:

	char *fgets(char *s, int size, FILE *stream);

fgets() 有三个参数:

       FILE *stream  文件指针
        int size    读取大小
        char *s,  读出得数据存储指针,指向存储缓冲区,可以是字符数组名,也可以是指向字符数组的字符指针变量名

其功能是从 stream 流中读取 size 个字符存储到字符指针变量 s 所指向的内存空间。它的返回值是一个指针,指向字符串中第一个字符的地址。

文件写

和文件读对应,常用的文件写函数有:

  1. fputc()函数用于将单个字符写入文件。它将一个字符输出到流。fputc()函数原型定义为:

     int fputc(int c, FILE *stream)
    
  2. fputs() 函数也是用来显示字符串的,它的原型是:

     int fputs(const char *s, FILE *stream);
    

两个参数:
s 代表要输出的字符串的首地址,可以是字符数组名或字符指针变量名。
stream 表示输出流,可以是标准输出流 stdout,也可以是文件流

图形界面的文件操作管理

图形界面具有界面友好,直观和容易使用的特点,用户往往通过鼠标和图形窗口的方式来选择文件进行操作,例如windows的explorer,界面如下:

在这里插入图片描述怎么实现昵?下面以codeblock20为例介绍

配置libcomdlg32.a库

在 Code::Blocks 20.03 中,要使用FileDialog(szFile))来图形化的打开文件对话框,需要comdlg32.a库的支持,配置方法如下:
1.选择Settings -> compiler

在这里插入图片描述2.选择linker settings,选择add -> 浏览, D:\Program Files\CodeBlocks\MinGW\x86_64-w64-mingw32\lib找到libcomdlg32.a并添加,添加好如下图:

在这里插入图片描述当然,具体目录地址需要根据你的codeblock安装地址选择即可。

系统功能的实现

char szFile[100] = {0};
if(FileDialog(szFile))
{
	puts(szFile);
}
in = fopen( szFile, "r" );
if(in==NULL)
{
    printf("open error\n");
    return;
}
while(fgets(line_buff,sizeof(line_buff),in))//逐行循环读取文件,直到文件结束
{
  //文件的数据处理操作
}
fclose(in); //使用完毕,关闭文件

至此,我们实现了图形界面下的文件打开、读取、操作和关闭的全流程。

相关文章:

  • 算法与数据结构【30天】集训营——详解查找章节数据结构(C语言版 第2版)课后习题答案 (20)
  • 对象以死嘛?对象什么时候该死?看这一篇就够了
  • DDoS报告团伙规模
  • Android 注解与注解处理器简述
  • 【C++】STL——vector(万字详解)
  • Rust学习指南(一)安装RUST后台管理框架
  • 车载操作系统汇总
  • 硬件工程师成长之路(10.1)——芯片选型
  • libusb系列-001-libusb简介
  • 基于Nonebot2搭建QQ机器人实战篇(一)
  • git工具基本操作命令
  • Xilinx zynq 7010/7020 GPIO
  • 【ESP32】13.DS18B20温度传感器实验(OneWire和DallasTemperature库)
  • 『 云原生·Docker』Dockerfile是什么?如何使用 Dockerfile文件构建镜像?
  • 【嵌入式数据库】一文带你吃透通过apiBaseUrl获取FlexManager监控点数据
  • ES6指北【2】—— 箭头函数
  • [译]Python中的类属性与实例属性的区别
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CSS盒模型深入
  • es的写入过程
  • GitUp, 你不可错过的秀外慧中的git工具
  • JAVA多线程机制解析-volatilesynchronized
  • Less 日常用法
  • underscore源码剖析之整体架构
  • 编写高质量JavaScript代码之并发
  • 缓存与缓冲
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 小程序button引导用户授权
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Linux·i2c驱动架构​
  • #define、const、typedef的差别
  • #define用法
  • #stm32驱动外设模块总结w5500模块
  • (04)odoo视图操作
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (23)Linux的软硬连接
  • (C#)获取字符编码的类
  • (第61天)多租户架构(CDB/PDB)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (十) 初识 Docker file
  • (四)Controller接口控制器详解(三)
  • (转)http协议
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET成年了,然后呢?
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .NET中 MVC 工厂模式浅析
  • .Net转前端开发-启航篇,如何定制博客园主题