次の形式の非常に基本的なマップ ファイルをロードする関数を作成しました。
1:1 2:1 1:1 2:2 2:2 2:2 ...
................... 2:1 1:1
ただし、fscanf
ファイルの読み取りに使用すると、非常に奇妙な動作が発生します。
FILE
マップを読み取るために設定した変数を見るとbase
、の「ストリーム」の要素はFILE
ファイルを完全に読み取ったようです。ただし、_ptr
の「ストリーム」の にFILE
は、最初の番号と最後の番号がありません。したがって、次のように読み取られます。
:1 2:1 1:1 2:2 2:2 2:2 ...
................... 2:1 1:
とエラーを生成しています。
これが私の機能です:
/**
* loads a map
*/
bool Map::LoadMap(char* tFile)
{
FILE* FileHandle = fopen(tFile, "r"); // opens map file for reading
if (FileHandle == NULL) // returns if the map file does not exist
return false;
for(int Y = 0; Y < MAP_HEIGHT; Y++) // iterates through each row
{
for(int X = 0; X < MAP_WIDTH; X++) // iterates through each column
{
Node tNode; // temp node to put in the map matrix
int tTypeID = 0;
int tNodeCost = 0;
fscanf(FileHandle, "%d:%d", tTypeID, tNodeCost);
tNode.SetPosition(X, Y);
tNode.SetType(tTypeID);
tNode.SetNodeCost(tNodeCost);
mMap[X][Y] = tNode; // inserts temp node into list
}
fscanf(FileHandle, "\n");
}
fclose(FileHandle);
return true;
}
なぜこれが起こっているのですか?