🔴 用系统调用走一个来回

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)三个回执都要对:写了几个字节、读了几个字节、内容一不一样。

开始练习 →

⚠️ 写一个「读够为止」的循环

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)一次 read 不保证读满,把它包成一个读够为止的函数。

开始练习 →

一个参数都没给的时候,`argc` 是几

命令行只敲了程序名,什么参数都没带,argc 是【0】。

开始练习 →

⚠️ `argv` 里装的是什么类型

argv[1] 拿到手的是【0】。

开始练习 →

🔴 参数不够时,程序该怎么办

用户少给了一个必需参数,程序最该做的是【0】。

开始练习 →

数一数给了几个开关、几个文件

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)⚠️ 判题机跑程序时不带参数,所以这一节的参数都是**在 main 里造出来**,再交给 run() 的——真实工具也该这么分,才好测。 #include <std

开始练习 →

判断「一个参数都没给」

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)⚠️ 判题机跑程序时不带参数,所以这一节的参数都是**在 main 里造出来**,再交给 run() 的——真实工具也该这么分,才好测。

开始练习 →

⚠️ 分开数:开关归开关,文件归文件

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)⚠️ 判题机跑程序时不带参数,所以这一节的参数都是**在 main 里造出来**,再交给 run() 的——真实工具也该这么分,才好测。

开始练习 →

🔴 参数是字符串,得转,还得检查转成没有

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)三个参数里有一个根本不是数。

开始练习 →

⚠️ 让程序按参数改变行为

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)认 -v 和 -c 两个开关,开关给重复了也只算打开一次。

开始练习 →