Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在linux中读取目录内容大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我们如何在 Linux中使用C语言读取目录的内容(子目录和文件名). 这是一个递归程序,以递归方式打印所有子目录和文件的名称. 用法:./ a.out路径名 不检查作为命令行参数提供的初始路径名的错误条件. 基本代码流程: 读取当前目录中的所有条目. 如果是目录名,则将其名称添加到路径名中,并以递归方式调用函数. 否则打印文件的名称. 有关特定函数的详细信息可以在dmuir指出的各个手册页中引用:
我们如何在 Linux中使用C语言读取目录的内容(子目录和@L_616_2@名).

解决方法

这是一个递归程序,以递归方式打印所有子目录和@L_616_2@的名称.
用法:./ a.out路径名
不检查作为命令行参数提供的初始路径名的错误条件.
基本代码流程:
读取当前目录中的所有条目.
如果是目录名,则将其名称添加到路径名中,并以递归方式@L_874_12@函数.
否则打印@L_616_2@的名称.

有关特定函数的详细信息可以在dmuir指出的各个手册页中引用:

#include<sys/stat.h>
#include<unistd.h>
#include<dirent.h>
#include<error.h>
int read(char *pth)
{
    char path[1000];
    strcpy(path,pth);
    DIR *dp;
    struct dirent *files;
    /*structure for storing inode numbers and files in dir
    struct dirent
    {
        ino_t d_ino;
        char d_name[NAME_MAX+1]
    }
    */
    if((dp=opendir(path))==NULL)
        perror("dir\n");
    char newp[1000];
    struct stat buf;
    while((files=readdir(dp))!=NULL)
    {
              if(!strcmp(files->d_name,".") || !strcmp(files->d_name,".."))
                conTinue;

        strcpy(newp,path);
        strcat(newp,"/");
        strcat(newp,files->d_Name); 
            printf("%s\n",newp);

            //stat function return a structure of information about the file    
        if(stat(newp,&buf)==-1)
        perror("stat");
        if(S_ISDIR(buf.st_modE))// if Directory,then add a "/" to current path
        {

            strcat(path,"/");
            strcat(path,files->d_Name);
            read(path);
            strcpy(path,pth);
        }
    }
}
int main(int argc,char *argv[])
{

    read(argv[1]);
}

大佬总结

以上是大佬教程为你收集整理的在linux中读取目录内容全部内容,希望文章能够帮你解决在linux中读取目录内容所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。