2016-03-01 57 views
0

我目前正在制作一款游戏,并且我想从我的对象的硬编码位置转换为从文本文件读取它们。但是,我似乎正在使用此版本的代码获取未处理的异常。我也有一个问题,当我试图声明这个函数内的文件,它表示readData正在被使用但未被初始化。我真的很感激一些帮助,弄清楚我搞乱了什么。谢谢C和SDL问题与fopen_s

void loadPlatform(gameState *gState) { // Platform load function 
    fopen_s(gState->readData, "PlatformsLevel1.txt", "r"); 
    int tempPos; 
    int i = 0; 

    while (fscanf_s(gState->readData, "%d", &tempPos) > 0) { 
     gState->posArray00[i] = tempPos; 
     i++; 
    } 
    fclose(gState->readData); 
+0

我建议你[先阅读'fopen_s'参考资料](https://msdn.microsoft.com/en-us/library/z5hh6ee9.aspx)。 –

+0

解决了它谢谢 – CilveksHSL

+1

除非我错过了一些与SDL无关的东西。标签是否应该被移除? –

回答

0

简短的回答:你错过了&在调用fopen_s。

fopen_s(&gState->readData, "PlatformsLevel1.txt", "r"); 

的原型fopen_s

errno_t fopen_s( 
    FILE** pFile, 
    const char *filename, 
    const char *mode 
); 

原型为fscanf_s

int fscanf_s( 
    FILE *stream, 
    const char *format [, 
    argument ]... 
); 

如果gState->readDataFILE*类型,此代码的工作,它应该是,然后您需要将&gState->readData传递给fopen_s