是否可以使用fopen在OS X上读取C中具有相对路径的文件?

时间:2014-02-14 04:27:23

标签: c fopen

我正在尝试在我的API中执行类似的操作:

char* fileName = "./path/to/file.bmp";
Texture* tex = (Texture *) malloc(sizeof(Texture));
FILE* file = fopen(fileName, "rb");

但由于某种原因,file即将出现。

有没有办法用相对路径获取此文件描述符?

我看到很多关于这方面的问题,但没有什么可以让我在OS X上执行此操作。

3 个答案:

答案 0 :(得分:1)

请检查fopen的返回值。 即

FILE* file = fopen(fileName, "rb");
if(file==NULL)
{
    printf("File can't opened!!");
    exit(0)
}

答案 1 :(得分:1)

我找到了解决方案。我的项目文件夹是这样的:

project
|_ src
|_ examples
   |_ example1
      |_ main.c
      |_ assets
         |_ file.bmp

我试图从main.c获取文件描述符。 filePath将是assets/file.bmp,但这不是真的;我可以使用项目文件夹中的路径获取文件描述符,相对文件路径为examples/example1/assets/file.bmp

答案 2 :(得分:0)

“无法获取文件信息”是什么意思?你的所有片段显示都是你已经分配了一个文件名(恰好是你的进程运行的位置),你已经分配了一个(Texture *)变量,并通过调用fopen()获取了一个文件句柄。 p>

所有fopen()都会为您打开文件。如果你想从文件中获取数据,你必须fread()或fscanf()它,例如(假设文件内容是二进制的,我们不关心我们是否正确读取整个文件):

(void)fread(tex, sizeof(Texture), 1, file);

另外两件事:#1我称我的文件句柄不同,如fdinputfd - 它有助于减少混淆的可能性,#2使用calloc()而不是malloc () - 它将为你分配的空间归零。

您的代码还有什么作用?