【问题标题】:C open a file for reading in a diferrent directoryC 打开一个文件在不同的目录中读取
【发布时间】: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 提供给我的信息,但我似乎无法弄清楚如何让它发挥作用。硬链接?

【问题讨论】:

  • 请发布您的真实代码,而不是您首先编写或更改的代码。如果出于安全原因必须进行更改,请更改最低要求。发布假代码就像去你的汽车维修店说“我的车怎么了?我没带它,但它看起来有点像停在那里的那个,它发出的有趣声音有点像来自刚刚经过的那辆车。”

标签: c file directory


【解决方案1】:

看来你为这个函数指定的任何参数都需要是一个字符串。

    opendir( /home/example/Inside/Test )

看到这个问题Open directory using C

【讨论】:

  • 是的,我这样说是为了更容易理解。
  • @Alessandroempire 故意省略必要的语法只会使问题更难诊断......
【解决方案2】:

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

【讨论】:

  • 其实我想把完整的路径名。但是怎么做?将目录与文件名连接起来??
  • @Alessandroempire 是的,没错。
  • 谢谢!!完美运行!简单的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2016-01-04
  • 2015-10-08
相关资源
最近更新 更多