【发布时间】:2012-06-15 00:52:00
【问题描述】:
对文件系统操作有疑问:在我们执行程序的不同目录中打开文件。
假设我们在以下目录中执行我们的程序:/home/example,我们希望程序转到另一个目录,例如:home/example/Inside/Test,并打开最后一个目录中的所有 txt 文件。
好吧,那么一小段代码:
/*variables*/
struct dirent *strdir;
DIR *diro;
struct stat statbuffer;
char *path = /home/example/Inside/test
diro = opendir( path )
/*cheked it opened properly*/
while ( (strdir = readdir(diro)) != NULL ){
stat(strdir->d_name, &statbuffer); /*Gets information of file*/
if (S_ISREG(statbuffer.st_mode)){
/*its regular type*/
/*check its of type txt*/
???
我输入???是因为我使用了fopen,但它不起作用。当然不是,因为 /home/example 中不存在该文件。打开也是一样。
所以我想,也许我可以将目录和文件名连接成一个字符以获得完整路径,但这听起来有点难看...
另一个想法是使用 stat 提供给我的信息,但我似乎无法弄清楚如何让它发挥作用。硬链接?
【问题讨论】:
-
请发布您的真实代码,而不是您首先编写或更改的代码。如果出于安全原因必须进行更改,请更改最低要求。发布假代码就像去你的汽车维修店说“我的车怎么了?我没带它,但它看起来有点像停在那里的那个,它发出的有趣声音有点像来自刚刚经过的那辆车。”