24 / 07 / 08
新建 helloworld.c
并写入以下代码。
int main(int argc, char *argv[]) { puts("Hello world."); return 0; }
$ make helloworld.c
报错make: Nothing to be done for 'helloworld.c'.
解决方式: make helloworld
编译后提示:(与教程下述
$ CFLASS='-Wall' make helloworld
结果一致)cc helloworld.c -o helloworld helloworld.c: In function ‘main’: helloworld.c:3:5: warning: implicit declaration of function ‘puts’ [-Wimplicit-function-declaration] 3 | puts("Hello world."); | ^~~~ helloworld.c:1:1: note: include ‘<stdio.h>’ or provide a declaration of ‘puts’ +++ |+#include <stdio.h> 1 | int main(int argc, char *argv[])
解决方式:添加 #include <stdio.h>
即可。
在你的文本编辑器中打开
ex1
文件,随机修改或删除一部分,之后运行它看看发生了什么。
提示 Segmentation fault,**STFW:**Segmentation faults in C or C++ is an error that occurs when a program attempts to access a memory location it does not have permission to access.
推测可能删除的部分与程序访问的内存地址相关,删除后程序访问了错误的地址。
再多打印5行文本或者其它比
"Hello world."
更复杂的东西。
#include <stdio.h> int main(int argc, char *argv[]) { puts("Hello world."); for(int i = 1; i < 6; i++) { for(int j = 0; j < i; j++) { printf("%%"); } printf("\n"); } return 0; }
踩坑 1:puts
自带换行。
踩坑 2:%
是转义字符,要输出需要 %%
。
执行
man 3 puts
来阅读这个函数和其它函数的文档。
提供了定义的头文件、不同的 puts 类型作用、返回值、相关函数等信息。