在使用opengl和c ++开发3D游戏时遵循本教程https://www.youtube.com/watch?v=rOzQ8jSOnbo我在fseek中收到错误:
char* ShaderInterface::loadTextFromFile(const char* file)
{
FILE *currentFile = fopen(file, "rt");
fseek(currentFile, 0, SEEK_END); // Thread 1: EXC_BAD_ACCESS
int count = (int)ftell(currentFile);
// ...
}
我确定这应该可行,因为git帐户中的源代码确实有效,但我确定可能有更好的方法来执行此操作。
答案 0 :(得分:2)
当您致电fopen()
时,您必须检查返回值。该函数可能会失败(例如,如果文件不存在):
FILE* currentFile = fopen(file, "rt");
if (currentFile) {
// success
fseek(currentFile, 0, SEEK_END);
// etc.
}
else {
// report error back about not being able to open file
// check errno, maybe log perror(), etc...
}