摘要

本文分享了修复一个古早C语言矩阵求逆程序的过程。作者选取了101号逆矩阵计算项目,在Windows11环境下使用Dev-C++、VSCode和gcc6.3.0进行调试。主要解决了clrscr()和getch()函数兼容性、main()返回类型、scanf输入验证等问题,添加了必要的函数声明和内存分配检查。通过反复调试最终实现了零错误警告。文章还介绍了使用VSCode管理C语言项目的方法,包括环境配置和Git版本控制,以及在Gitee上创建仓库的步骤。整个过程中,作者掌握了处理老旧代码兼容性问题、VSCode和gitee的使用。

1.选题与准备

1.1选题

我从课程资源 GameCode155.rar 的项目中,选取 101 号逆矩阵的计算作为分享主题,想来也没有什么特殊的原因,或是看对眼了吧。

1.2环境准备

  • Windows 11

  • Dev-C++ 5.11、Vscode1.107.1 、 gcc6.3.0

  • 豆包,deepseek,chatgpt5.2

2.编译调试过程

2.1初始编译与错误分析

初始编译的错误和警告如图所示:

根据查找到的信息来看,这些错误源于:

 · 平台和编译器的兼容性问题:早期的代码常常依赖特定平台的库(如 conio.h),而现代编译器和操作系统通常不再支持这些过时的特性。

 · 现代C语言标准要求更严格:现代C标准要求明确的函数声明、类型检查和内存管理,这在早期的代码中往往被忽视。

 · 代码健壮性和安全性:现代编译器更加注重代码的健壮性和安全性,尤其是在输入验证、内存分配和数组访问时。

2.2错误修正

1.修复 clrscr()getch()

  • 问题:clrscr()getch() 不再被现代编译器支持。

  • 修正:使用 system("clear")system("cls") 来代替 clrscr(),并将 getch() 替换为 getchar()

2. 修改 main() 的返回类型

  • 问题:main() 函数的返回类型应为 int,而不是 void

  • 修正:将 main() 函数的返回类型从 void 改为 int,并在函数结尾添加 return 0

3. 修复 scanf 输入验证

  • 问题:scanf 输入没有验证,可能导致输入错误时程序崩溃。

  • 修正:对 scanf 的返回值进行检查,确保输入数据正确。

4. 添加函数声明

  • 问题:函数 MatrixMulbrinvprint_matrix 缺少声明,这会导致编译器警告。

  • 修正:在文件的顶部添加函数原型声明。

5. 检查 malloc 的返回值

  • 问题:malloc 分配内存后没有检查是否成功。

  • 修正:在 malloc 调用后,检查返回值是否为 NULL,并进行适当的错误处理。

2.3反复调试

将修改后仍然出现的错误提示反馈给chatgpt并反复修改直至零错误警告

3代码的理解和命名

3.1运行测试

  • 初始化:通过定义清屏命令、精度阈值和函数声明进行初始化。

  • 输入:程序要求用户输入矩阵的阶数和元素,并进行有效性检查。

  • 计算:通过 brinv 函数计算矩阵的逆,并通过 MatrixMul 验证矩阵和逆矩阵的乘积是否为单位矩阵。

  • 输出:打印原矩阵、逆矩阵和乘积矩阵,最后等待用户按键退出。

3.2代码解析

  1. 初始化:配置跨平台环境 → 定义常量 → 声明函数 → 初始化变量。
  2. 输入:循环读取有效 n → 循环读取矩阵元素并备份 → 输入容错处理。
  3. 计算:调用 brinv 求逆(含内存分配 / 奇异矩阵判断) → 求逆成功则调用 MatrixMul 验证。
  4. 输出:求逆成功则打印原矩阵 / 逆矩阵 / 乘积矩阵 → 清空缓冲区 → 等待用户按键退出 → 程序结束。

4使用vscode管理项目

4.1vscode配置

安装vscode:官网下载安装包,根据提示一步步安装

配置vscode:从左侧拓展栏搜索c相关插件

c语言环境配置:下载MinGW-w64并解压到中文路径,右键 “此电脑→属性→高级系统设置→环境变量”,在系统Path中添加该bin路径,cmd 输入gcc -v验证。

关联编译器:在 VSCode 中按Ctrl+Shift+P,输入C/C++: Edit Configurations (UI),选择 MinGW-w64 的gcc.exe路径。

4.2在vscode中编译运行

5代码版本管理

5.1Gitee仓库创建

创建Gitee账户,用手机号注册并登录

新建仓库:点击界面右上角进入创建仓库

填写仓库信息:填写仓库名(如UNIO'S)

仓库介绍:简要描述(如 to study)

其他设置:如生成readme文件,选择私有或公有,c模板等

完成创建:点击创建即可获得Gitee仓库

5.2vscode中集成git

1.Git 环境准备
已安装 Git 并配置好用户信息,在Git Bash执行git config --global user.name "用户名"和git config --global user.email "邮箱"

6总结

本次作业让我收获许多,我学到了如何解决古早 C 语言代码在现代环境下的兼容问题,掌握了malloc类型转换、跨平台宏定义、输入缓冲区处理等关键技巧;掌握了 VS Code 与 Gitee 的集成方法,理解了 Git “仓库 - 暂存区 - 本地仓库 - 远程仓库” 的工作流;

这些让我收获匪浅,我会带着这些收获继续学习c语言,在代码之路上稳步向前。

附录

study_used_only: to study - Gitee.com

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐