【发布时间】:2015-06-20 05:40:14
【问题描述】:
在我的程序中,stat 仅适用于当前目录。谁能帮我解决这个问题。
即使我从 main 传递参数,它也只适用于当前目录。 并且源路径很好,它正在打印我从主路径传递的正确路径。
DIR *dr;
struct dirent *cur;
struct stat fi;
long int total_size = 0;
dr = opendir(source);
char *name;
printf("%s\n\n\n", source);
if (!(dr))
{
perror("opendir()");
return(1);
}
while (cur = readdir(dr))
{
if(cur->d_name[0] != '.')
{
if(stat(cur->d_name, &fi) == -1)
{
printf("error \n\n");
}
else
{
printf("%s ",cur->d_name);
printf("%ld ",fi.st_blocks);
total_size = total_size + fi.st_blocks;
}
}
}
printf("\n\ntotal_size = %ld \n", total_size);
printf("\n\n\n");
return 0;
}
【问题讨论】:
-
能否提供当前输出和预期输出?
-
这一行:'perror("opendir()");'不会准确介绍打开目录的任何问题。这是因为对 printf() 的调用介于对 opendir() 的调用和对 perror() 的调用之间,而 printf() 可以修改 errno 的内容。
-
谢谢 :) 我很困惑,因为我得到了当前目录的正确值,但现在我知道了 :)