coreutils-4.5.1/basename.c 读源码的方法

coreutils-4.5.1/basename.c 读源码的方法
为了按行数看代码的命令写错了,应该写成这样:
ls -s *.c | sort -n -k1 | more

我想,读源码,的最大方法,是要改于打开源码,开始读,只要开始了,方法总会有的。
路虽远,行则达。
有时,我感觉很急,你看,我翻ruby0.49时,想,这个代码我连编译都不成功,而且这么多代码没看懂,可新的版本又出来了。你有一种想追,却总是追 不上的感觉。
很令人伤心。
现在,我只能安慰自己,把心放在当下,就算真看完了最新版本的源码,那又如何这世界永远都有无穷的奥秘等待我们去探索。既然如此,那何不享受当下。
打开basename.c
作者在注释中加了测试代码,太妙了。

basename  /usr/foo/abc.xya  .xya
abc
我终于明白,这个SUFFIX是什么意思了,大致是把后缀去掉。再读代码
remove_suffix(char *name,const char *suffix)
{
    while (np>name && sp>suffix)
        if (*--np != *--sp) 
            return ;
略去---
}
因为我在linux下读代码,拷出来不便,所以只敲击核心代码。这个代码写得可真漂亮。
字字珠矶呀。
要去掉两个字串末尾相同的后缀,先让它们都指向末尾,再看末尾有多少相同的,找到位置后,在最后一个相同的字符改为'\0',即实现了,把
"abc.xya"中.xya去掉的效果,太妙了。不过,我可要调试下,为何是
if (np>name) *np='\0';
而不是np++后,再赋值呢?这个加减一逻辑,我可要想想!!!
我想最重要的是要把英语学好。

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/83141510
今日推荐