【411】COMP9024 Assignment1 问题汇总
1. 构建 Makefile 文件后运行错误,undefined reference to 'sqrt'
- 实际上是没有链接math数学库,所以要
$gcc test.c –lm //-lm就是链接到math库。 - 参考:C 语言 undefined reference to 'sqrt' 问题解决
- 参考:Why am I getting “undefined reference to sqrt” error even though I include math.h header? [duplicate]
2. Linux 下 C 语言程序的调试
- 将文件保存为hello.c后,在终端中使用敲入以下命令来使用GCC对程序进行编译。
gcc hello.c -o hello - 编译通过后,我们会在当前目录中看到hello文件,这就是编译后生成的可执行文件。
- 参考:Linux下编写C程序( GCC )(hello,world)
3. 创建 Makefile 文件
- 相当于将上面的编译命令写入到一个 Makefile 文件中,文件无扩展名,第一个字母可以大写,其他都是小写
- 通过 make 命令可以执行 Makefile 文件
- 参考:【410】Linux 系统 makefile 文件
- 参考:Makefile使用
4. 文件标准输入输出,stdin、stdout、stderr
- stdin:可以通过控制台、也可以通过文件
- stdout:可以直接输出到文件
- stderr:不会输出到文件
- 参考:https://wiki.cse.unsw.edu.au/cs9024cgi/19T2/Lec01IO
- 参考:格式化输出函数fprintf()中的stdout、stderr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //读取的数据存储在 str 中 //可以通过手动输入 //也可以通过命令行从文件输入 //a < input.txt //将需要输入的信息存储到 input.txt 中即可 fgets (str, 50, stdin); //可以直接输出到控制台 //也可以通过命令行输出到文件中 //a < input.txt > output.txt //只会将含有 stdout 的内容输出到文件中 //带有 stderr 的部分则是正常以错误的形式打印在控制台上 fprintf (stderr, "Error!" ); fprintf (stdout, "Error!" ); |
5. 不能使用数组(也就是方括号)
- 动态分配内存
- malloc:需要判断,最后需要释放
- realloc:需要判断,最后需要释放
- 参考:C语言内存分配函数malloc、calloc和realloc
- 参考:【C/C++】内存分配与释放(malloc、calloc、realloc、free)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // (char *):说明类型,最好带着 // sizeof(char) * 10:分配内存的大小需要通过计算,不同类型不一样 char *str = ( char *) malloc ( sizeof ( char ) * 10); //判断 if (str == NULL){ fprintf (stderr, "Memory allocation error.\n" ); exit (EXIT_FAILURE); } // 基本与上面类似 str = ( char *) realloc (str, sizeof ( char ) * 20); //判断 if (str == NULL){ fprintf (stderr, "Memory allocation error.\n" ); exit (EXIT_FAILURE); } // 释放 free (str); str = NULL; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2018-06-23 【327】Python 中 PIL 实现图像缩放
2018-06-23 【326】PIL 截图及图片识别