1

对文件系统操作有疑问:在我们执行程序的不同目录中打开文件。

假设我们在以下目录中执行我们的程序:/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 提供给我的信息,但我似乎无法弄清楚如何使其工作。硬链接?

4

2 回答 2

0

似乎您为此函数指定的任何参数都必须是字符串。

    opendir( /home/example/Inside/Test )

请参阅此 SO 问题Open directory using C

于 2012-06-15T00:53:45.997 回答
0

如果您不想将目录名称放在路径上(这可能是正确的做法),请致电chdir("/home/example/Inside/Test");

于 2012-06-15T00:55:13.593 回答