2天学完C语言------- 十一、 GUI编程和图形库的使用

11. GUI编程和图形库的使用(拓展,后续学习的方向)

1.c语言使用的图形库

除了上述提到的SDL和GTK+,还有其他一些适用于C语言的图形库可供选择,例如:

1. **OpenGL**:OpenGL是一种跨平台的图形渲染API,可以用于创建高性能的2D和3D图形应用程序。虽然它是一个底层的图形库,但配合其他库(如GLUT、GLFW)可以用于创建GUI界面。

2. **Allegro**:Allegro是一个易于使用的游戏开发库,也可以用于GUI编程。它提供了处理图形、声音、输入设备等的函数,适用于创建2D游戏和图形应用程序。

3. **Ncurses**:Ncurses是一个在字符终端上创建文本用户界面的库。它可以用于创建具有菜单、对话框、文本框等的终端应用程序,并通过键盘控制进行交互。

4. **FLTK**:FLTK(Fast Light Toolkit)是一个跨平台的C++ GUI开发库,但也提供了C语言的绑定。它提供了一组轻量级的GUI组件,可以用于创建简单的窗口、按钮和文本框等界面元素。

5. **SFML (Simple and Fast Multimedia Library)**: SFML是一个跨平台的多媒体库,可以用于创建2D游戏和多媒体应用程序。它提供了图形绘制、窗口管理、音频处理、输入处理等功能,可以方便地进行GUI编程。

6. **Raylib**: Raylib是一个简单易用的2D游戏开发库,同时也可以用于创建基于图形界面的应用程序。它具有轻量级、跨平台性和高性能的特点,提供了处理图形、输入、窗口管理等功能。

7. **FreeGLUT**: FreeGLUT是一个用于OpenGL的开源窗口工具包,它提供了创建窗口、处理输入事件等功能。虽然主要用于OpenGL编程,但也可以结合其他函数和库进行GUI开发。

8. **IUP**: IUP是一个跨平台的界面工具包,用于创建简单的界面应用程序。它提供了创建按钮、文本框、对话框等界面元素的函数,并具有事件处理和布局管理功能。

9. **GTKMM**: GTKMM是用于C++的GTK+的官方绑定库,但它也提供了C语言的接口。它允许您使用C语言编写GTK+应用程序,并提供了一组用于GUI开发的类和函数。

10. **Qt**: Qt是一款流行的跨平台GUI开发框架,主要为C++开发者设计。然而,Qt也提供了用于C语言的接口,称为Qt for Embedded Linux(也称为Qt for Embedded Systems)。使用Qt,您可以创建功能丰富的图形界面应用程序。

11. **EFL (Enlightenment Foundation Libraries)**: Enlightenment Foundation Libraries是一个功能强大的图形库集合,用于构建丰富和动态的用户界面。它提供了许多GUI组件和工具,适用于创建窗口、按钮、菜单等界面元素。

这些库都具有不同的特点和适用范围,请根据您的需求选择适合的库进行C语言的GUI编程。确保在使用这些库之前准备好安装和配置要求,并参考官方文档和示例代码以获取更详细的使用指南和示例。

2.Gui编程其他语言使用的图形库

GUI编程(Graphical User Interface Programming)是指使用图形化界面来开发应用程序的方法。通过GUI编程,可以创建用户友好的界面,让用户通过鼠标、键盘等方式与应用程序进行交互。

在不同的编程语言中,有各种图形库可供使用,这些图形库提供了创建窗口、按钮、文本框、图像等GUI组件的函数和方法。

下面是几个常用的GUI编程和图形库:

1. **Java Swing**:Java提供了Swing作为其GUI编程工具包。Swing具有丰富的组件库,可以创建各种界面元素,并可通过事件处理来实现用户交互。

2. **C# Windows Forms**:Windows Forms是.NET平台的GUI编程框架,用于开发Windows应用程序。它提供了大量的可视化控件,通过事件驱动的方式实现用户交互。

3. **Python Tkinter**:Tkinter是Python标准库中的GUI编程工具包,它基于Tk图形库。Tkinter简单易用,可以创建窗口、按钮、标签等界面元素,并通过事件处理实现交互。

4. **C++ Qt**:Qt是一种跨平台的C++应用程序开发框架,它提供了丰富的GUI编程工具,并支持多种操作系统。Qt具有良好的可定制性和高性能。

这些图形库不仅提供了创建GUI组件的函数和方法,还提供了事件处理、布局管理、绘图和多线程等功能,以满足各种应用程序的需求。

使用图形库进行GUI编程一般遵循以下步骤:

1. 导入图形库的相关模块。

2. 创建窗口和其他GUI组件,设置它们的属性和布局。

3. 注册事件处理函数,处理用户交互产生的事件。

4. 启动主循环,等待事件的发生并执行相应的事件处理函数。

5. 释放资源和关闭窗口。

不同的图形库和编程语言的具体使用方法有所不同,你可以参考相关图形库的官方文档和示例代码来学习和使用。

十二、标准库函数(分类汇总)

在C语言中,标准库提供了许多函数和组件,可以用于很多方面的编程。以下是一些常用的标准库函数以及它们的功能分类:

1. 输入输出函数

  • - `printf`:格式化输出数据到标准输出设备
  • - `scanf`:从标准输入设备读取格式化输入数据
  • - `fprintf`:格式化输出数据到文件
  • - `fscanf`:从文件中读取格式化输入数据
  • - `getchar`:从标准输入设备读取一个字符
  • - `putchar`:将一个字符输出到标准输出设备

2. 字符串处理函数

  • - `strcpy`:复制字符串
  • - `strcat`:拼接字符串
  • - `strlen`:获取字符串长度
  • - `strcmp`:比较两个字符串
  • - `strstr`:在字符串中查找子字符串
  • - `strchr`:在字符串中查找字符
  • - `isalpha`:检查字符是否为字母
  • - `isdigit`:检查字符是否为数字
  • - `toupper`:将字符转换为大写
  • - `tolower`:将字符转换为小写
  • - `isupper`:检查字符是否为大写字母
  • - `islower`:检查字符是否为小写字母

3. 数学函数

  • abs:取绝对值
  • sqrt:求平方根
  • pow:求幂运算
  • `sin`、`cos`、`tan`:三角函数
  • `floor`、`ceil`:向下取整和向上取整
  • `exp`、`log`:指数与对数函数
  • fabs:取绝对值函数

4. 动态内存管理函数

  • - `malloc`:分配内存
  • - `calloc`:分配并清零内存
  • - `realloc`:重新分配内存
  • - `free`:释放内存
  • - `memcpy`:从源内存区域复制指定长度的字节到目标内存区域
  • - `memset`:将目标内存区域设置为特定值
  • - `memcmp`:比较两个内存区域的内容

5.时间和日期函数

  • - `time`:获取当前时间的UNIX时间戳
  • - `ctime`:将UNIX时间戳转换为本地时间字符串
  • - `strftime`:将本地时间格式化为指定的字符串形式
  • - `gmtime`:将UNIX时间戳转换为GMT时间结构
  • - `difftime`:计算时间差
  • - `mktime`:将时间转换为秒数

6. 文件操作函数

  • - `fopen`:打开文件
  • - `fclose`:关闭文件
  • - `fread`:从文件中读取数据
  • - `fwrite`:将数据写入文件
  • - `feof`:检查文件结束标志
  • - `fprintf`:将格式化数据写入文件

 7. 类型转换函数

  • - `atoi`:将字符串转换为整数
  • - `atof`:将字符串转换为浮点数
  • - `itoa`:将整数转换为字符串
  • - `sprintf`:将格式化的数据输出到字符串中

8. 断言函数

  • - `assert`:在代码中插入断言,用于检查逻辑错误

9. 随机数函数

  • - `rand`:生成伪随机数
  • - `srand`:设置随机数的种子

10. 命令行参数函数

  • - `argc`:命令行参数的数量
  • - `argv`:命令行参数的字符串数组

这些函数是C标准库中的一部分。除了标准库函数,C语言还支持与操作系统相关的系统调用函数、数学库函数以及自定义函数等。您可以根据自己的需求,查阅C语言的官方文档或相关资源,以获取更多的标准库函数和其他相关函数的使用说明和示例。 

5. 格式化输入输出和文件格式处理

格式化输入输出(Formatted I/O)是一种常用的操作,可用于将数据以特定的格式读取和写入。C语言提供了标准库中的函数来进行格式化输入输出,主要是通过`printf`和`scanf`函数进行输出和输入的格式化操作。

1.printf函数

`printf`函数用于将数据以指定格式输出到标准输出(屏幕)或指定文件。它可以根据格式字符串中的格式控制符,将数据转换为相应的字符串进行输出。一些常用的格式控制符包括:

  • - `%d`:十进制整数
  • - `%f`:浮点数
  • - `%s`:字符串
  • - `%c`:字符
  • - `%x`:十六进制整数
  • - `%o`:八进制整数

int num = 10;

printf("%d\n", num);//可将整数 num 以十进制形式输出到屏幕。 

2. scanf函数

`scanf`函数用于从标准输入(键盘)或文件中按指定格式读取数据,并将其存储到变量中。与`printf`类似,`scanf`也使用格式控制符来指定要读取的数据类型。一些常用的格式控制符包括:

  • - `%d`:十进制整数-----对应int类型
  • - `%f`:浮点数-----对应float类型
  • - `%s`:字符串-----对应 string类型
  • - `%c`:字符-----对应char类型

例如:

scanf("%d", &num);//可从键盘读取一个整数,并将其存储到变量`num`中。

3. 文件格式处理

C语言中的文件操作函数可以用于读写不同的文件格式。常见的文件格式包括文本文件和二进制文件。

- **文本文件处理**:文本文件以纯文本的形式存储数据,可以使用标准库中的文件操作函数进行读写,例如`fopen`、`fclose`、`fprintf`和`fscanf`。可以使用`fprintf`函数按照指定的格式将数据写入文本文件,使用`fscanf`函数按照指定的格式从文本文件中读取数据。

- **二进制文件处理**:二进制文件以二进制的形式存储数据,可以使用`fread`和`fwrite`函数进行读写。`fread`函数用于从二进制文件中按指定字节数读取数据,`fwrite`函数用于按指定字节数将数据写入二进制文件。

这些是C语言中用于格式化输入输出和文件格式处理的一些常见函数。您可以根据具体需求,使用适当的函数来实现数据的格式化读写和文件格式处理。同时,请根据实际情况处理文件的打开和关闭、异常处理等操作,以确保程序的正确性和健壮性。

11. 数学库函数的高级使用

数学库函数在C语言中提供了各种基本和高级的数学运算功能。以下是一些常见的数学库函数以及它们的高级使用:

1. 三角函数

  • - `sin`、`cos`、`tan`:计算给定角度的正弦、余弦和正切值
  • - `asin`、`acos`、`atan`:计算给定值的反正弦、反余弦和反正切值
  • - `sinf`、`cosf`、`tanf`:单精度浮点数版本的三角函数
  • - `sinh`、`cosh`、`tanh`:计算双曲正弦、双曲余弦和双曲正切值

2. 指数和对数函数

  • - `exp`、`log`:计算给定值的指数和对数值
  • - `pow`:计算给定底数和指数的幂值
  • - `sqrt`:计算给定值的平方根
  • - `cbrt`:计算给定值的立方根
  • - `log10`:计算给定值的以10为底的对数值

3. 取整函数

  • - `floor`、`ceil`:向下取整和向上取整的功能
  • - `round`:四舍五入取整
  • - `trunc`:截断小数部分取整

4. 其他函数

  • `fabs`:计算给定值的绝对值
  • - `fmod`:计算两个给定值的浮点数除法的余数
  • - `isnan`、`isinf`:检查给定值是否为NaN(非数)或无穷大

使用这些数学库函数时,需要包含C语言的数学库头文件 ``。在编写代码时,可以根据具体需要选择合适的数学函数,并传入相应的参数进行调用。在处理浮点数时,如果需要使用单精度浮点数(float类型)的数学函数,则需要在函数名后面添加后缀 "f"。

注意,数学库函数的使用需要遵循相应的数学规则和取值范围。在使用时务必进行适当的检查和验证,以确保程序的正确性和健壮性。

7. 时间和日期处理函数应用

时间和日期处理函数在程序中经常用于获取、处理和格式化时间和日期信息。C语言提供了一些标准库函数来支持时间和日期的操作。以下是一些常用的时间和日期处理函数及其应用:

1. time函数

`time`函数用于获取当前的系统时间,返回从1970年1月1日00:00:00 UTC起到当前时间的秒数。它的原型如下:

time_t time(time_t *timer);

 应用示例:

time_t currentTime;

time(¤tTime);

printf("当前时间:%s", ctime(¤tTime));

2.gmtime函数和localtime函数

`gmtime`函数和`localtime`函数用于将时间戳转换为结构体表示的时间,以及将结构体表示的时间转换为时间戳。其中,`gmtime`函数将时间戳转换为世界标准时间(UTC),而`localtime`函数将时间戳转换为本地时间。这两个函数的原型如下:

 struct tm *gmtime(const time_t *timer);

struct tm *localtime(const time_t *timer);

 应用示例:

time_t currentTime;
   time(&currentTime);
   struct tm *timeinfo = localtime(&currentTime);
   printf("当前时间:%02d:%02d:%02d", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);

3. strftime函数

strftime`函数用于将时间结构体转换为格式化的字符串。通过提供指定的格式字符串,可以按照自定义的格式输出时间信息。其原型如下:

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);

应用示例:

   time_t currentTime;
   time(&currentTime);
   struct tm *timeinfo = localtime(&currentTime);
   char buffer[80];
   strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", timeinfo);
   printf("当前时间:%s", buffer);

4.difftime函数

`difftime`函数用于计算两个时间之间的差值,以秒为单位。它的原型如下:

   double difftime(time_t time1, time_t time0);

应用示例:

  time_t currentTime;
   time(&currentTime);
   time_t pastTime = ...;  // 过去的时间
   double seconds = difftime(currentTime, pastTime);
   printf("两个时间间隔:%f秒", seconds);

      这些函数提供了基本的时间和日期处理功能,您可以根据具体的需求和场景选择合适的函数进行应用。还有其他更高级的时间和日期处理函数,可以通过查阅C语言的官方文档或相关资源来获取更多详细信息。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小白Erike.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值