文件转换的一个小问题
文件转换中的问题;
源文件如下:
W 30 6000 6000 778376,-596704;
B 8000 49206 656718,31827;
P -1434086,999086 -634086,999086 -634086,159086 -614086,159086
-614086,299086 -634086,299086 -634086,999086 -448086,999086 -448086,201086;
P 867298,-118208 859298,-126208 853642,-120550 861642,-112550;
B 40000 225200 1136510,-712558;
B 406000 312000 778914,-339914;
...
...
先把文件的每句命令读到一个CString对象里,但后得到关键字和数据。
写了一个函数,得到每句的第一个大写字母,也就是语句的关键字了,但不知道为什么,每次执行一次是正确的,再多执行就是乱码了。
函数如下:
char GetKeyword(CString str) //str=("B 406000 312000 778914,-339914;")例如这样复制时候是正确
// 的,但放在文件中处理就错误了{
char cc;
int i=0;
while(i<str.GetLength())
{
cc=str.GetAt(i);
if(cc==' ')
i++;
else break;
}
return cc;
}
放在文件中处理时候,是这样写的:
CStdioFile file("XXX.cif",CFile::modeRead);
CString CommandStr; //-------文件中的每一句命令
char * pbuf;
pbuf=new char[1]; //------暂时存放所读到的字符
DWORD filelength=file.GetLength(); //-------文件长度
char KeyWord;
vector <DWORD> vec;
vector <DWORD>::iterator vi;
char cc;
while(filelength>0)
{
file.Read(pbuf,sizeof(char));
if(*pbuf !=';')
{
CommandStr+=(*pbuf);
}
else
{
//得到命令字符串CommandStr,此时CommandStr为每句命令,而且正确
cc=GetKeyword(CommandStr);// 出错!!只有第一句处理的是正确的,后面要么空白要么乱码 //---------------------------------------------------命令处理 END
CommandStr=(""); //--------------------准备读取下一句命令
}
filelength--;
}
不知道我这样写哪里不对,为什么在整个文件处理的时候,得到关键字函数只有第一次执行正确,而后面都不正确呢??请大家给个建议啊!不胜感激