linux 为什么while(dirp = readdir(dp) != NULL)可以实现循环读取呢..谁能给我说

linux 为什么while(dirp = readdir(dp) != NULL)可以实现循环读取呢..谁能给我说,第1张

opendir和readdir的原理决定的

你可以认为 opendir后 打开的是一个文件夹,这个文件夹指向一个结构体

也就是返回的dp

而dp里面有一个链表,或者数组

每次readdir就把这个数据向前移动一位,并返回当前文件节点dirp

等这个链表 移动到尾部,就是返回NULL,这时就代表遍历结束了。

首先

DIR

*opendir(const

char

*filename)

struct

dirent

*readdir(DIR

*dirp)

利用这两个函数获取你目录下

while(

(psDirent=readdir(pdir))

!=

NULL

)

{

//readdir返回的是目录下的名称,然后判断一下当前这个名字是子目录还是文件

struct

stat

st

stat(

pcFileName,

&st

)

if(

S_ISDIR(st.st_mode)

)

continue;//是目录继续循环

else

filecount++;//是文件就加1

}

从循环出来后创建文件名为file(filecount+1)的文件。

这个只是简单思路。最后别忘closedir。因为你的需求里,并未涉及文件创建个数的上限以及如果删掉某个文件后的需求。

通常,如果你目录下文件个数固定似乎更好办一些。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7127245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存