链接大小的“未初始化的值”

时间:2016-06-14 09:43:19

标签: c++ file filesystems symlink

我正在尝试打印当前目录中文件的大小,我正在使用此函数来获取大小

string filesize( const char * filename){
    ostringstream os;
    struct stat buf;
    stat(filename, &buf);
    if( buf.st_size > 1000000000){
         os << setprecision(2) << fixed << (float)buf.st_size/1024000 <<"mb";
    }else if( buf.st_size > 1024){
         os << setprecision(2) << fixed <<  (float)buf.st_size / 1024 <<"kb";

    }else{
         os  << buf.st_size <<"bt"; 
    }
        return os.str();    
}

和这段代码获取文件列表并打印其大小

DIR *dir;
dirent *pdir;
dir=opendir(".");
int det;

while((pdir=readdir(dir))){
    cout <<  filesize(pdir -> d_name) << endl;

}

效果很好。唯一的问题是当目录包含指向不在当前目录中的文件的符号链接时,例如

<{1>} /sandbox/tests中有一个sym链接指向

中的文件
/school/work

在这种情况下,这段代码会引发大量关于

的错误
  

条件跳转或移动取决于未初始化的值

     

使用大小为8的未初始化值

为什么会出现这个问题?有什么方法可以解决这个问题吗?我想弄清楚但找不到任何解决方案

0 个答案:

没有答案