stat函数的使用和遇到的坑

本文介绍了stat函数的正确使用方法,强调参数必须为文件的绝对路径以避免找不到文件的错误。通常,网上的C语言示例可能只使用当前目录下的文件名。通过stat函数,可以实现类似ls命令的功能,获取指定目录下的文件详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stat函数的使用

stat(const char *restrict path, struct stat *restrict buf)
说明:其中path变量不能只是当前目录下的文件名,那样会出现未找到文件或者目录的错误,应该是文件的绝对路径,
并将转化后的信息放到buf中。目前网上很多c实现都是写的读到的文件名。这里说明一下。
其中linux下man手册里的也是用的文件名 (dp->d_name)
在这里插入图片描述

   count_tiff_file = 0;

    DIR *pDir;
    struct dirent *pEntry;

    struct stat buf;
    pDir = opendir(PATH);

    if(pDir == NULL)
    {
        qDebug() << "opendir error";
        return;
    }

    while((pEntry = readdir(pDir)) != NULL)
    {

        if(strcmp(pEntry->d_name, ".") == 0 || strcmp(pEntry->d_name, "..") == 0)
            continue;  //jump not show file
        //这个时候不能直接用pEntry->d_name 作为stat的参数,这只是文件名,参数应该为绝对路径
		//stat(pEntry->d_name,&buf);
       }
    }
    closedir(pDir);

获取指定目录下的文件信息,类似于实现ls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值