linux 下的一个小程序,请高手帮忙看看

程序如下:#include<unistd.h>#include<stdio.h>#include<dirent.h>#include<string.h>#include<... 程序如下:
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>

void printdir (char* dir)
{
DIR* dp;
struct dirent* entry;

if ( (dp = opendir(dir) ) == NULL )
{
fprintf (stderr, "cannot open directory: %s\n", dir);
return;
}

while ( (entry = readdir(dp) ) != NULL );
{
printf ("%s\n", entry->d_name);
}

closedir (dp);
}

int main ()
{
printf ("Directory scan of /home :\n");
printdir ("/home");
printf ("done.\n");

exit(0);
}

用gcc编译成功,但运行时显示断错误,错误出现在while处,请大虾们帮忙看看到底错在哪里??谢了先
忘了说了,此程序是用来遍历一个文件夹下的所有文件

改正一下是“段错误”
展开
 我来答
xniren
2008-06-26 · TA获得超过1154个赞
知道小有建树答主
回答量:554
采纳率:100%
帮助的人:522万
展开全部
建议楼主检查一下
库函数readdir()的返回值,以及结构struct dirent的成员d_name的含义。
“运行时显示断错误”表示程序访问了非法的指针。根据程序来看,总共存在三个指针:dp、entry和d_name。逐一排除吧。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式