目录

  • 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); //使用完毕,关闭文件

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

codeblock图形界面编程(十)文件操作相关推荐

  1. 【转】linux图形界面编程基本知识

    原文:https://blogs.gnome.org/raywang/2007/10/11/linux%E5%9B%BE%E5%BD%A2%E7%95%8C%E9%9D%A2%E7%BC%96%E7% ...

  2. 视频教程-精通Win32 API编程-Windows图形界面编程-C/C++

    精通Win32 API编程-Windows图形界面编程 黄强老师,国家软件设计师,软件开发工程师,项目经理.产品经理.培训讲师. 创业合伙人,多年C.C++开发经验,尤擅长移动互联网项目的开发! 黄强 ...

  3. Java图形界面编程模拟ATM自助取款系统

    本人学习Java时一直想做一个图形界面的程序,所以利用闲暇时间,做了一个Java图形界面编程模拟ATM自助取款系统,界面简洁漂亮,基本功能ATM功能实现. 程序初始时 考号:123456 密码:123 ...

  4. Gox语言中使用Sciter库进行GUI图形界面编程-GX23.1

    Sciter是非常优秀的跨平台GUI图形界面编程库,只需附带一个动态链接库文件,就可以实现基于HTML/CSS/TiScript的图形界面,并且已经经过很多公司和商用产品的实际检验,稳定可靠.我们常见 ...

  5. GUI编程(图形界面编程)上

    GUI编程(图形界面编程)上 定义 图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令.调用文件.启动程序或执行其它一些日常任务.与通过键 ...

  6. Python升级之路( Lv11 ) GUI图形界面编程

    Python系列文章目录 第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础 第七章 面向对象深入 第八章 异常机制 第九章 ...

  7. java图形界面多线程_多线程编程、Java I/O系统和Java图形界面编程

    多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同 ...

  8. Python进阶(一) - 图形界面编程Tkinter(1)

    一.图形界面编程 图形用户界面(Graphical User Interface,GUI)是用户与程序交互的接口,好的GUI会大大提高用户交互体验,其实就是我们平时使用电脑时,使用鼠标.键盘点击的程序 ...

  9. python 如何删除frame 中的 label标签控件_玩转图形界面编程—解析Python小挑战No12(2)...

    <Python真好玩,教孩子学编程>小挑战[转载] 第十二章,玩转图形界面编程书籍<Python真好玩,教孩子学编程> 讲解了如何通过tkinter模块来完成图形交互界面 tk ...

  10. Java图形编程实验总结_实验二java图形界面编程2015级.doc

    实验二java图形界面编程2015级.doc 实验二JAVA图形界面编程一.实验目的熟悉JAVA运行环境,编程掌握JAVASWING组件的图形界面编程.二.实验环境微机,软件MYECLIPSE,JDK ...

最新文章

  1. mysql以及mysql bench安装教程
  2. Windows10+Python3.6(Anaconda3)+OpenCV3.4安装配置
  3. 开源中国iOS客户端学习——(五)网络通信ASI类库(1)
  4. nginx子域名 linux,配置nginx服务器 —— Nginx添加多个二级子域名
  5. DX使用随记--ImageComboBoxEdit
  6. 延长EEPROM使用寿命的程序优化方法
  7. 使用Python内置的smtplib包和email包来实现邮件的构造和发送
  8. 带入gRPC:gRPC Streaming, Client and Server
  9. pdf.js 在线浏览pdf组件构建与安装注意事项
  10. vlan间路由的问题
  11. 4种方法帮你解决IntelliJ IDEA控制台中文乱码问题
  12. Oracle增加自增长列
  13. 网外(Internet)访问代理服务器内部的实现方法
  14. 奇怪的同床人:指纹现象……或state.gov与facebook.com
  15. yum源及常用安装包整理
  16. (Note)阿克西斯ACASIS DT-3608双盘位硬盘阵列盒RAID设置
  17. OpenCV显示中文字体
  18. VSCode按ctrl与鼠标左键无法实现跳转的解决办法
  19. win10添加照片查看器
  20. 2021-2022软件架构与设计趋势报告

热门文章

  1. 高中计算机会考知识点选择题,高中信息技术会考选择题知识点
  2. 计算机指令与运算基础原理笔记
  3. MAC上编写汇编程序
  4. 利用Echarts+阿里云地图选择器绘制可交互的行政区划地图
  5. linux match函数,关于VLOOUP函数与index match函数
  6. 普通计算机用的是什么屏幕,笔记本屏幕的色域 72%NTSC和100%sRGB有什么区别
  7. java log4j trace_关于LOG4J中的日志级别TRACE
  8. php 复制到剪切板,兼容多种浏览器”复制到剪贴板”的解决方案
  9. 批量打印证书 php,巧用WPS2013批量打印证书
  10. 第二章、音频压缩算法