2016-03-01 84 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