在我的程序中,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;
}
答案 0 :(得分:2)
cur-> d_name仅包含文件名。
获得' stat()'在当前目录之外,
需要以路径字符串作为前缀。
还需要检查readdir()返回的结构是否 是一个文件或子目录。
答案 1 :(得分:0)
主要问题是stat
需要文件路径,但d_name
只是文件名。您可以在stat
here
d_name
的有效示例