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

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

opendir和readdir的原理决定的
你可以认为 opendir后 打开的是一个文件夹,这个文件夹指向一个结构体
也就是返回的dp
而dp里面有一个链表,或者数组
每次readdir就把这个数据向前移动一位,并返回当前文件节点dirp
等这个链表 移动到尾部,就是返回NULL,这时就代表遍历结束了。
温馨提示:内容为网友见解,仅供参考
无其他回答

linux 为什么while(dirp = readdir(dp) != NULL)可以实现循环读取呢...
你可以认为 opendir后 打开的是一个文件夹,这个文件夹指向一个结构体 也就是返回的dp 而dp里面有一个链表,或者数组 每次readdir就把这个数据向前移动一位,并返回当前文件节点dirp 等这个链表 移动到尾部,就是返回NULL,这时就代表遍历结束了。

在linux下的c语言编程时使用readdir的时候读取到的“.”和“..”怎么...
\/\/跳过他们就行,例如 while ((dirp = readdir(dp)) != NULL) { if (strcmp(dirp->d_name, ".") == 0 || strcmp(dirp->d_name, "..") == 0)continue; \/* ignore dot and dot-dot *\/ \/* do something *\/ } \/\/什么叫判断不出来?你的具体的语句是什么?

linux下,编写一个c语言程序实现...(详细见正文)!急!200分悬赏!
printf("%s\\n",dirst->d_name);} closedir(dirp);return 0;}

谁能教我编写一个简单的木马`
目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛...

c语言 读取目录中的文件名,并将其存入数组中
用system 调用 DOS DIR 命令就可以了:system ( "dir sss_* \/B > log.txt");这就把 前缀为sss_的文件 文件名 存入 log.txt 文件了。一个名字一行,没有别的东西。你再 读出来。include <stdio.h> main(){ FILE *fp;char str[30][50]; \/\/ 假定文件数不超过30个 int i,n=0;s...

c++中怎么把读取文件夹下的所有文件名存入数组
while((ptr = readdir(dir)) != NULL) \/\/循环读取目录数据 { printf("d_name : %s\\n", ptr->d_name); \/\/输出文件名 strcpy(file_list[i],ptr->d_name ); \/\/存储到数组 if ( ++i>=100 ) break;} closedir(dir);\/\/关闭目录指针 } 2、在windows平台下,如VC也有类似的操作函数...

相似回答