linux 函数 readddir 获取文件目录 出现段错误 不知如何解决

1#include<stdio.h>2#include<stdlib.h>3#include<dirent.h>//需要该头文件'45intmain(){6DIR*dir... 1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <dirent.h>//需要该头文件'
4
5 int main(){
6 DIR* dir=opendir("../day03");
7 if(dir == NULL )perror("opendir"),exit(-1);
8 struct dirent* ent=readdir(dir);//先读一次
9 while(dir){
10 // printf("%d,%s\n",ent->d_type,ent->d_name);
11 // printf("%d,%s\n",ent[0].d_type,ent[0].d_name);//ent[0]==*(ent+0)
12 printf("%d,%s\n",(*ent).d_type,(*ent).d_name);
13 ent = readdir(dir);//继续读
14 }//d_type==4 是目录,不等于4 是文件
15 return 0;
16 }

执行显示
8,mem.c
8,.mem.c.swp
8,a.out
8,env.c
4,.
4,..
段错误 (核心已转储)

不知道错在哪里
展开
 我来答
KevenSGS
2015-09-03
知道答主
回答量:1
采纳率:0%
帮助的人:2万
展开全部
为什么用while(dir)来做循环?
追问
那你说怎么弄啊 大神
追答
估计是因为在printf("%d,%s\n",(*ent).d_type,(*ent).d_name);里面ent是空,所以出段错误。
你要先弄明白每个函数的用途和返回值的含义(在linux下通过man就可以了)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式