1

这是我使用 stat() 获取文件大小的函数:

off_t fsize(const char *filename) {                                                                                                                   
  struct stat st;                                                                                                                                        

  if (stat(filename, &st) == 0)                                                                                                                          
     return st.st_size;                                                                                                                                 

  fprintf(stderr, "Cannot determine size of %s: %s\n",                                                                                                   
         filename, strerror(errno));                                                                                                                    

  return -1;                                                                                                                                             
}

我可以通过以下方式获得文件大小:

size = fsize ("byte.bin");

但是当我需要从本地目录的较低目录中获取文件时,比如说“deps/src”目录,它会过早地停止在我身上,并且没有我预期的错误消息:

size = fsize ("deps/src/byte.bin");

我编写了一个使用该函数的小程序,将 byte.bin 文件复制到“deps/byte.bin”并使用“deps/byte.bin”调用我的 fsize 函数并得到错误“无法确定 byte.bin 的大小” : 没有相应的文件和目录”

如果我使用像“/something/deps/byte.bin”这样的绝对路径,它就可以工作。

我做错了什么以及如何显示我为相对路径执行此操作?

4

1 回答 1

1

我猜正在发生的事情是您错误地假设了工作目录。测试工作目录在哪里的一种简单方法是编写一个程序,该程序仅输出test.txt. 在许多(但不是全部)情况下,工作目录是存储可执行文件的地方。这意味着如果您尝试访问相对路径上的文件,您可能需要..在相对路径中至少包含一个文件才能退出该bin目录。

于 2012-06-25T20:04:43.073 回答