Hi, I've been confused by this error I encountered. I got a segmentation fault when I tried to close a file stream. The funny thing is if I used getline from the stream, it worked. This is the code:
Code:
include <fstream>
include <vector>
include .....
.......
using namespace std;
struct sDemoActInFrame
{
int frame; //The frame of the action
int action; //The action
Sint16 cursorX; //Only if action == CURSOR_HAND
Sint16 cursorY; //Only if action == CURSOR_HAND
};
vector<sDemoActInFrame> mDemoActList;
fstream filestr; //File stream
char temp[256]; //Temp buffer for reading
bool readData=true;
//Open filestream
filestr.open ("./Stage_01/demo/demoacts.txt", fstream::in);
// Begin loading demo action list
filestr.getline(temp,256);
while (readData)
{
while (temp[0] == '#' || temp[0] == '\r' || temp[0] == '\0' || temp[0] == '\n' || strlen(temp) == 0)
{
filestr.getline(temp,256);
}
if (temp[0]==':') //::end = exit from loop
{
readData=false;
}
else
{
sDemoActInFrame tempDemoAct;
sscanf ( temp, " %d : %d : %d : %d ",
&(tempDemoAct.frame), &(tempDemoAct.action), &(tempDemoAct.cursorX), &(tempDemoAct.cursorY));
mDemoActList.push_back(tempDemoAct);
filestr.getline(temp,256);
}
}
// End loading actions
filestr.close(); <-- segmentation error
Can anybody tell me what's the problem? This gave me a headache. If this doesn't work, I'll revert it back to C style file operation. Thanks in advance.