C 统计问题
C trouble with stat
在我的程序中,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;
}
cur->d_name只包含文件名。
获取当前目录外的'stat()',
需要以路径字符串作为前缀。
还需要检查是否从 readdir() 返回的结构
是文件或子目录。
主要问题是 stat
需要文件路径,但 d_name
只是文件名。您可以找到如何将 stat
与 d_name
一起使用的工作示例
在我的程序中,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;
}
cur->d_name只包含文件名。
获取当前目录外的'stat()',
需要以路径字符串作为前缀。
还需要检查是否从 readdir() 返回的结构 是文件或子目录。
主要问题是 stat
需要文件路径,但 d_name
只是文件名。您可以找到如何将 stat
与 d_name