【问题标题】:Direntp current directory shell CDirentp 当前目录 shell C
【发布时间】:2013-10-27 03:59:07
【问题描述】:

这个功能有问题:

dirp = opendir(ruta);

    if (dirp != NULL){   
        while ((direntp=readdir(dirp)) != NULL) {       
            stat(ruta, &estructura);

对不起我的英语...希望你能理解我

----------------------------------------------- --------------------------------------

谢谢,功能完美!

我为此更改了代码:

while ((direntp=readdir(dirp)) != NULL) {       
                sprintf( cwd, "%s/%s", ruta, direntp->d_name );
                    stat(cwd, &estructura );

感谢您的帮助,很抱歉在这里写信,但我无法在 7 小时内发表评论。 谢谢!!!!!!!

谢谢

【问题讨论】:

  • OT:检查stat()调用结果的代码丢失。
  • lstotal 行中打印的是每个文件块数的总和(查看here)。您无法通过一次调用 stat() 获得它,而是必须自己添加所有大小的块。

标签: c ls stat


【解决方案1】:

这是因为您从stat 获取目录 的信息,您传递给opendir 的那个目录。

您必须使用该目录作为基础,然后附加您从readdir 获得的文件名。

【讨论】:

    【解决方案2】:

    您总是为目录本身调用stat

    这...:

    while ((direntp=readdir(dirp)) != NULL) {       
        stat(ruta, &estructura);
        ...
    }
    

    ... 应该是这样的:

    while ((direntp=readdir(dirp)) != NULL) {       
        char pathname[1024];
        sprintf( pathname, "%s/%s", ruta, direntp->d_name );
        stat( pathname, &estructura );
    
        ...
    }
    

    【讨论】:

    • 感谢您的帮助。
    • 请帮我处理 st_blocks
    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多