专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

linux下C的段异常

发布时间:2011-06-28 16:17:23 文章来源:www.iduyao.cn 采编人员:星星草
linux下C的段错误。
代码如下,完成递归遍历目录的功能,输出目录中的文件名和文件类型,使用的是linux的低级IO函数,程序运行时发生段错误,不知道是为什么。
C/C++ code

void listfiletype(char *name)
{
    DIR *dp=opendir(name);
    dirent *drp;
    struct stat buf;//取得文件的元信息。
    while((drp=readdir(dp))!=NULL)
    {
        lstat(drp->d_name,&buf);//以下if-else判断文件类型。reg普通文件,dir目录。
        if(S_ISREG(buf.st_mode))
            printf("%s:reg\n",drp->d_name);
        else if(S_ISDIR(buf.st_mode))
        {
            
            if((strcmp(drp->d_name,".")!=0)&&
            (strcmp(drp->d_name,"..")!=0))//don't search upper dir and current dir again.
            {    
                printf("%s:dir\n",drp->d_name);
                listfiletype(drp->d_name);//递归遍历目录。
            }
        }
        else if(S_ISCHR(buf.st_mode))
            printf("%s:char\n",drp->d_name);
        else if(S_ISLNK(buf.st_mode))
            printf("%s:link\n",drp->d_name);
        else if(S_ISBLK(buf.st_mode))
            printf("%s:block\n",drp->d_name);
        else if(S_ISFIFO(buf.st_mode))
            printf("%s:fifo\n",drp->d_name);
        else if(S_ISSOCK(buf.st_mode))
            printf("%s:socket\n",drp->d_name);
        else
            printf("other.\n");
    }
    closedir(dp);
}



------解决方案--------------------
C/C++ code
DIR *dp=opendir(name);
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: