【发布时间】:2013-01-30 19:44:38
【问题描述】:
更多的问题,我真的很困惑,而且一直困扰着我,我几乎用 dirent.h 尝试了所有的东西。但这是我想要的一个例子:
#include <iostream>
#include "DataEventResponseMsg.idl"
using namespace std;
int main(){
cout << "This is the size: " << sizeof(DataEventResponseMsg) << endl;
return 0;
}
所做的是包含该特定文件并找到它的大小并打印它。我想这样做,但我需要它来打开一个充满 .idl 文件的目录并使用 sizeof.. 打印它是哪个文件以及它的大小。
我尝试使用dirent.h并打开目录,并将内容放入ent->d_name,然后查找d_name的大小等,但所做的只是打印文件的大小指针..我尝试将文件放入数组中,但执行 sizeof 只打印数组的大小。我希望它打印实际文件的大小,就好像我将它们包含在我发布的头文件中一样..
这可能吗?我很困惑,我需要让它工作,但我需要帮助。
请帮忙。
编辑 ------
所以我用 dirent.h 完成了这个:
#include <iostream>
#include <dirent.h>
#include <string.h>
#include <fstream>
using namespace std;
int main( int argc, char* argv[] ){
char FileArr[20][256];
DIR *dir;
FILE *fp;
int i = 0;
int k;
struct dirent *ent;
dir = opendir (argv[1]);
if( dir != NULL ){
while(( ent = readdir ( dir ) ) != NULL ){
strcpy( FileArr[i], ent->d_name );
fp = fopen( FileArr[i], "rw" );
cout << FileArr[i] << ", " << sizeof(FileArr[i]) << endl;
fclose(fp);
i++;
}
closedir( dir );
}
return 0;
}
这从命令行打开了目录,并将内容放入 ent->d_name,我将这些字符串复制到一个数组中,并尝试查找数组中所有内容的大小。但是,执行 sizeof 只会计算指针的数组大小(如果我使用了指针)。我想找到实际文件的大小,而不是任何保存文件字符串/名称的东西。
【问题讨论】:
-
使用
stat(2)获取文件大小。 -
sizeof根本不适合这个东西;dirent.h方向有点正确。查看_stat / _stat64 / stat ...(或Windows 上的GetFileSizeEx) -
你能看看我的编辑吗?我以前用 dirent.h 做过一些事情,但它并没有按照我想要的方式工作..
-
好的,现在我看到了你想要实现的目标。嗯,我认为不以某种方式解析文件是不可能的。 @chakolatemilk 也许您应该将问题标题编辑为“确定文件中包含的结构的大小”
-
@lethal-guitar,是的,我害怕那个.. :(
标签: c++ printing header filenames filesize