如何使用C中的stat()查找不同相对目录中文件的大小?

这是我使用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”这样的绝对路径,它就有效。

我做错了什么以及如何表明我为相对路径做这件事?

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