我正在尝试在我的API中执行类似的操作:
char* fileName = "./path/to/file.bmp";
Texture* tex = (Texture *) malloc(sizeof(Texture));
FILE* file = fopen(fileName, "rb");
但由于某种原因,file
即将出现。
有没有办法用相对路径获取此文件描述符?
我看到很多关于这方面的问题,但没有什么可以让我在OS X上执行此操作。
答案 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我称我的文件句柄不同,如fd
或inputfd
- 它有助于减少混淆的可能性,#2使用calloc()而不是malloc () - 它将为你分配的空间归零。
您的代码还有什么作用?