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

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语言,相当有好处。我想,应该把代码当小说看,先了解主要情节,再慢慢深入细节。最后跳出代码,慢慢把玩。
 

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/80504332