Direntp当前目录shell C

Direntp当前目录shell C,c,ls,stat,C,Ls,Stat,我对此功能有问题: dirp = opendir(ruta); if (dirp != NULL){ while ((direntp=readdir(dirp)) != NULL) { stat(ruta, &estructura); 对不起,我的英语。。。我希望你能理解我 ------------------------------------------------------------------------

我对此功能有问题:

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小时内写评论。 谢谢


谢谢

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


您必须使用该目录作为基础,然后附加从
readdir

获取的文件名,这是因为您从
stat
获取该目录的信息,即传递给
opendir
的目录


您必须使用该目录作为基础,然后附加从
readdir

获取的文件名,这是因为您从
stat
获取该目录的信息,即传递给
opendir
的目录


您必须使用该目录作为基础,然后附加从
readdir

获取的文件名,这是因为您从
stat
获取该目录的信息,即传递给
opendir
的目录


您必须使用该目录作为基础,然后附加从
readdir

获取的文件名,您总是为目录本身调用
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 );

    ...
}

您总是为目录本身调用
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 );

    ...
}

您总是为目录本身调用
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 );

    ...
}

您总是为目录本身调用
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 );

    ...
}

OT:code没有检查调用
stat()
的结果。在
total
行中打印的
ls
是每个文件的块数总和(look)。您无法通过一次调用
stat()
获得它,但必须自己添加所有大小的块。OT:代码没有检查调用
stat()
的结果。在
total
行中打印的
ls
是每个文件的块数之和(look)。您无法通过一次调用
stat()
获得它,但必须自己添加所有大小的块。OT:代码没有检查调用
stat()
的结果。在
total
行中打印的
ls
是每个文件的块数之和(look)。您无法通过一次调用
stat()
获得它,但必须自己添加所有大小的块。OT:代码没有检查调用
stat()
的结果。在
total
行中打印的
ls
是每个文件的块数之和(look)。您无法通过一次调用
stat()
获得它,但必须自己添加所有块大小。感谢您的帮助。请帮助我使用st_块感谢您的帮助。请帮助我使用st_块感谢您的帮助。请帮助我使用st_块感谢您的帮助。请帮助我使用st_块感谢您的帮助。请帮助我使用st_块