段错误崩在哪个函数

场景:一个处理记录的程序跑到一半,只留下一句 Segmentation fault。六个处理函数长得几乎一模一样,光看代码猜不出是哪一个。 任务:编译并运行 ~/work/crash/crash.c(数据在 data.txt),找出程序崩在

开始练习 →

遇到脏数据就段错误

场景:一个库存计价程序在干净数据上好好的,一遇到空行或者没登记的商品就段错误。 任务:用 gdb 找到崩溃的地方,修好 ~/work/inv/inv.c 并编译出 ~/work/inv/inv:空行跳过,查不到的商品、缺数量、数量不是正整数

开始练习 →

argv 的第 0 个

C 程序里 argv[0] 是【0】。

开始练习 →

打开文件失败时

fopen 打开文件失败时返回【0】。

开始练习 →

数一数有几行

行数 = 换行符的个数;如果内容非空且最后一个字符不是换行,再加 1。补全后输出 行数/总字节数。 (本题用 gcc -std=c11 -O0 编译。)

开始练习 →

数文件行数的小工具

场景:团队想要一个比 wc -l 更「讲道理」的行数统计:最后一行没有换行也要算,打不开的文件要说清楚但别影响其他文件。 任务:新建 ~/work/wc/wcnt.c 并编译成 ~/work/wc/wcnt:./wcnt 文件… 逐个输出「

开始练习 →

读成绩表写出报告文件

场景:老师每次考完都要手工汇总成绩。你来写个工具:读一份 CSV,写出按总分排好序的报告文件。 任务:补全 ~/work/rep/report.c 并编译成 ~/work/rep/report:./report 成绩.csv 报告.txt,

开始练习 →

make clean 该做什么

交付一个 C 命令行工具时,make clean 应该【0】。

开始练习 →

整数除以零

在 C 语言里,整数除以 0 会【0】。

开始练习 →

先比分数再比名字

补全 qsort 的比较函数:分数从高到低,同分按姓名(strcmp)从小到大。输出排序后的姓名,用逗号连接。 (本题用 gcc -std=c11 -O0 编译。)

开始练习 →