【411】COMP9024 Assignment1 问题汇总
2024-10-17 06:24:05
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
//读取的数据存储在 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)
// (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;
最新文章
- SpringMVC中定时任务配置
- zookeeper定时清理log
- super和this区别
- Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”
- oracle中的常用语句
- container 的背后
- 构建CMDB的一些启发
- 前端HTML与CSS编码规范
- C# Stopwatch类_性能_时间计时器
- GridView行编辑、更新、取消、删除事件使用方法
- LeetCode 120. Triangle (三角形)
- shiro笔记-AuthenticatingRealm和AuthorizingRealm关系
- 无废话--Mac OS, VS Code 搭建c/c++基本开发环境
- One VS Rest
- noj电子老鼠走迷宫(深搜dfs)超时错误
- 从马文到AlphaGo AI走过了怎样的70年?
- vagrant特性——基于docker开发环境(docker和vagrant的结合)-2-命令
- OpenNebula学习第二节OpenNebula Node Installation
- nginx反向代理部署与演示(二)
- 总结开发ERP软件应遵循的一些基本原则
热门文章
- 跨域访问sessionid不一致问题
- mysql 时间类型datetime与timestamp区别比较
- django学习之- CSRF及中间件
- Intersection--poj1410(判断线段与矩形的关系)
- [洛谷U22156]未曾届到游览(矩阵树定理)
- Extjs.panel.Panel赋值的问题
- CoolCTO - 创业者的技术合伙人
- 学习Android从青铜到王者之第一天
- ArcGIS Server启动服务报:ERROR: Unable to start Xvfb on any port in the range 6600 - 6619
- BZOJ 1091([SCOI2003]分割多边形-分割直线)