C和SDL问题与fopen_s

时间:2016-03-01 19:39:04

标签: c

我正在开发游戏,我想从我的对象的硬编码位置过渡到从文本文件中读取它们。但是,我似乎得到了一个未处理的异常,使用此版本的代码。当我试图在这个函数中声明FILE时,我也遇到了一个问题,它说readData正在使用但没有初始化。我真的很感激帮助弄清楚我搞砸了哪里。感谢

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);

1 个答案:

答案 0 :(得分: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->readData类型为FILE*,并且要使此代码有效,那么您需要将&gState->readData传递给fopen_s