这是我使用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”这样的绝对路径,那就可以了。
我做错了什么以及如何表明我为相对路径做这件事?
答案 0 :(得分:1)
我猜测正在发生的事情是你错误地假设工作目录。测试工作目录的简单方法是编写一个只输出像test.txt
这样的文件的程序。在许多(但不是全部)情况下,工作目录是存储可执行文件的任何位置。这意味着如果您尝试访问相对路径上的文件,则可能需要在相对路径中包含至少一个..
才能离开bin
目录。