您的位置:首页 > 其它

学习了目录操作函数 编写了一个源…

2015-10-08 00:21 399 查看
这几天看Unix编程 学习了dirent.h这个头文件里面的一些目录读取函数 还有stat.h头文件里面的获取文件信息的函数
编写了Linux下面的ls命令 简化版的ls命令

    昨天
由于我的好奇心我下载了一个Linux内核(2.6.34.1)的源代码 看里面有一大堆源代码 好厉害..我就想看看他到底有多少行 没办法
只能自己编程计算 我就用所学的知识编写了一个统计源代码的程序 他可以统计一个目录树中所有指定扩展名的文件有多少行 共有多少个字符
并在文件中生成目录树 我还很蛋疼的加入了统计每个字符在目录中出现了多少个这种功能..(真tmd无聊..)

   算法就是通过递归遍历目录树然后读取文件
很sb的..本来想给目录按照名字排序 结果发现windows和linux下面对readdir这个函数的支持不一样
(感觉linux的目录信息结构体是本来就存在的 而windows的目录信息结构体是用API直接读取生成在静态空间里面的
因为文件系统不一样) 在linux下面不排序的话就是乱序 然后对文件名指针排序后就好了
然后在windows下面对指针排序后发现文件都是一样的名字...也就是说指针指向同一个空间.

 ....然后我就没加入蛋疼的排序功能
(其实在windows下面这个函数是自动生成从小到大的文件名的..真方便..更确定了他的目录结构体是临时生成在静态变量的)

   很蛋疼的扫描了下Linux 内核源码...有一千多万行代码
三亿多字符 吓了我一跳...

Charactor count in /media/e/linux/kernel/linux-2.6.34.1:

(Visible charactor)

   charactor
'   ' 
(ASCII:  32) :36829877 (11.2174%)

   charactor ' !
'  (ASCII:  33)
:  227529 (0.0692993%)

   charactor ' "
'  (ASCII:  34)
:  981736 (0.299011%)

   charactor ' #
'  (ASCII:  35) : 1019531
(0.310522%)

   charactor ' $
'  (ASCII:  36)
:    7067
(0.00215242%)

   charactor ' %
'  (ASCII:  37)
:  287997 (0.0877162%)

   charactor ' &
'  (ASCII:  38)
:  740808 (0.22563%)

   charactor ' '
'  (ASCII:  39)
:  129483 (0.0394371%)

   charactor ' (
'  (ASCII:  40) : 3935105
(1.19853%)

   charactor ' )
'  (ASCII:  41) : 3937486
(1.19925%)

   charactor ' *
'  (ASCII:  42) : 5294139
(1.61245%)

   charactor ' +
'  (ASCII:  43)
:  430409 (0.131091%)

   charactor ' ,
'  (ASCII:  44) : 4751289
(1.44712%)

   charactor ' -
'  (ASCII:  45) : 3191487
(0.972042%)

   charactor ' .
'  (ASCII:  46) : 1575165
(0.479753%)

   charactor ' /
'  (ASCII:  47) : 2321300
(0.707006%)

   charactor ' 0
'  (ASCII:  48) : 6915779
(2.10636%)

   charactor ' 1
'  (ASCII:  49) : 2120732
(0.645918%)

   charactor ' 2
'  (ASCII:  50) : 1714803
(0.522283%)

   charactor ' 3
'  (ASCII:  51) : 1087947
(0.33136%)

   charactor ' 4
'  (ASCII:  52)
:  986460 (0.300449%)

   charactor ' 5
'  (ASCII:  53)
:  606067 (0.184592%)

   charactor ' 6
'  (ASCII:  54)
:  808268 (0.246177%)

   charactor ' 7
'  (ASCII:  55)
:  468726 (0.142761%)

   charactor ' 8
'  (ASCII:  56)
:  901063 (0.27444%)

   charactor ' 9
'  (ASCII:  57)
:  481907 (0.146776%)

   charactor ' :
'  (ASCII:  58)
:  533928 (0.16262%)

   charactor ' ;
'  (ASCII:  59) : 3781891
(1.15186%)

   charactor ' <
'  (ASCII:  60)
:  532255 (0.162111%)

   charactor ' =
'  (ASCII:  61) : 2504666
(0.762855%)

   charactor ' >
'  (ASCII:  62) : 1980438
(0.603189%)

   charactor ' ?
'  (ASCII:  63)
:   50317 (0.0153252%)

   charactor ' @
'  (ASCII:  64)
:   93794 (0.0285672%)

   charactor ' A
'  (ASCII:  65) : 2650946
(0.807408%)

   charactor ' B
'  (ASCII:  66) : 1075072
(0.327438%)

   charactor ' C
'  (ASCII:  67) : 2480897
(0.755615%)

   charactor ' D
'  (ASCII:  68) : 1966210
(0.598855%)

   charactor ' E
'  (ASCII:  69) : 3211633
(0.978178%)

   charactor ' F
'  (ASCII:  70) : 1381906
(0.420892%)

   charactor ' G
'  (ASCII:  71)
:  960919 (0.29267%)

   charactor ' H
'  (ASCII:  72)
:  683768 (0.208258%)

   charactor ' I
'  (ASCII:  73) : 2626775
(0.800046%)

   charactor ' J
'  (ASCII:  74)
:   36313 (0.01106%)

   charactor ' K
'  (ASCII:  75)
:  447644 (0.13634%)

   charactor ' L
'  (ASCII:  76) : 1727130
(0.526038%)

   charactor ' M
'  (ASCII:  77) : 1720172
(0.523919%)

   charactor ' N
'  (ASCII:  78) : 1937673
(0.590164%)

   charactor ' O
'  (ASCII:  79) : 1814087
(0.552523%)

   charactor ' P
'  (ASCII:  80) : 1867258
(0.568717%)

   charactor ' Q
'  (ASCII:  81)
:  181357 (0.0552365%)

   charactor ' R
'  (ASCII:  82) : 2666262
(0.812072%)

   charactor ' S
'  (ASCII:  83) : 2613991
(0.796152%)

   charactor ' T
'  (ASCII:  84) : 2647271
(0.806288%)

   charactor ' U
'  (ASCII:  85) : 1124368
(0.342453%)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: