gnu coreutils-4.5.1 comm.c代码分析4

本文深入分析gnucoreutils-4.5.1版本中comm.c的writeline()函数,解释如何通过打印 实现文件1、文件2特有内容及共有内容的分栏显示,强调代码阅读对C语言理解的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gnu coreutils-4.5.1 comm.c代码分析4
昨天睡觉时,也在想writeline(),总为其中打印\t原因不解,当时在想,为什么case 3:时,要在乎是否打印了only_file_1,only_file_2呢?想了一会,终于明白了。现把自己的理解说一下。
writeline(*line,*stream,class)本质上完成的任务就是根据class的类别,向stream上打印出line的内容。
class=1
 如果only_file_1==0,表示文件1特有的内容不打印,为此,结束程序。
class=2
 如果only_file_2==0,表示文件2特有的内容不打印,为此,结束程序。
 如果此时,打印了only_file_1,为了与only_file_1的内容不搅在一起,先打印一个\t
class=3
 如果only_file_3==0,表示文件1与2共有的内容不打印,为此,结束程序。
 如果此时,打印了only_file_1,为了与only_file_1的内容不搅在一起,先打印一个\t
 如果此时,打印了only_file_2,为了与only_file_2的内容不搅在一起,先打印一个\t
做完上面的处理,再打印需要的内容。
我在上面还是没有说明白,实际上,writeline()的目标 就是打印内容,但为了把文件1特有的内容、文件2特有的内容以及共有的内容分开显示,需要在三组内容之间打印\t,以分栏显示。为此,在打印文件2特有内容之前显示一个\t,在打印文件1,2共有内容之前,一般要打印2个\t
感觉读代码对自己理解C语言,相当有好处。我想,应该把代码当小说看,先了解主要情节,再慢慢深入细节。最后跳出代码,慢慢把玩。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值