日志统计命令行工具

场景:运维同事每天要看好几份访问日志:总共多少请求、多少 5xx、哪些路径最热。他想要一个能在任何机器上直接用的命令行工具。 任务:从空文件写起 ~/work/logstat.py:python3 logstat.py 日志文件… [--t

开始练习 →

写出能抓住错误的测试

场景:money.py 已经写好而且是对的,但它没有测试。以后谁改坏了它,现在没有任何东西能发现。 任务:给 ~/work/lib/money.py 写 unittest 测试 ~/work/lib/test_money.py:在原版上全部

开始练习 →

-o 后面那个名字

命令 gcc -std=c11 -o stat stat.c 里,-o stat 的作用是【0】。

开始练习 →

改了源码没重编

改了 stat.c,却忘了重新编译就运行 ./stat,实际跑的是【0】。

开始练习 →

边读边数

从字符串里依次读整数,遇到读不出整数的位置就停。用 sscanf 的 %n 记下每次读了几个字符,输出 和/个数。 (本题用 gcc -std=c11 -O0 编译。)

开始练习 →

第一个编译运行的 C 程序

场景:判题机替你编译、替你喂输入。到了真机上,这两件事都得自己来:写源码、敲 gcc、运行产物、用重定向喂数据。 任务:新建 ~/work/stat.c 并编译成 ~/work/stat:从标准输入读整数直到输入结束,输出一行 和/个数/最

开始练习 →

把编译警告清干净

场景:一段计算平均值的代码编译时一声不吭,运行却不对,甚至会崩。其实编译器早就看出了问题——只是默认没说出来。 任务:用 -Wall -Wextra 重新编译 ~/work/avg.c,把每条警告背后的问题修好,编译出 ~/work/avg

开始练习 →

gcc -E 做了什么

一条 gcc 命令,背后是四个阶段 预处理 编译 汇编 链接 宏在第一格展开,函数在最后一格才对上号 gcc -E main.c 只做【0】这一步,然后把结果打到屏幕上。

开始练习 →

nm 里的字母 U

nm main.o 的输出里,一个符号前面标着 U,意思是【0】。

开始练习 →

少了括号的宏

宏只是文本替换。SQ(1 + 2) 会展开成 1 + 2 * 1 + 2。补全 SQ2,让 SQ2(1 + 2) 真的算出 9,输出 SQ结果/SQ2结果。 (本题用 gcc -std=c11 -O0 编译。)

开始练习 →