今天在解决一个问题的时候,使用到了fstream,结果发现相同的代码竟然出现不同的结果,后来发现是可能没有打开文件。代码如下:
#include <fstream>
#include <iostream>
using namespace std;
void main()
{
fstream infile("aaa1.txt");
fstream outfile("fatbat.bat");
fstream file("aaa.txt");
char sline[1024];
if(file.is_open()) // Line14
{
file.getline(sline,sizeof(sline));
cout<<sline<<endl;
}
infile.open("aaa1.txt"); // 一开始没有该行,Line21
if(infile.is_open()) //Line22
{
infile.getline(sline,sizeof(sline));
cout<<sline<<endl;
}
// system("fatbat.bat");
// cout<<"asdf"<<endl;
int i= 1;
}
如上面所标,如果没有21行,则输出来的是乱码,而另外Line14则能正常显示,这个问题困扰了好久,后来加上了Line21行程序后,都能正确输出了。
在使用CFlie类时 如下代码也出现错误
CFile inFlie,outFile;
BOOL rtnOpenInFile = inFlie.Open("Iplist.ini",CFile::modeRead,NULL);
outFile.Open("fatbat.bat",CFile::modeReadWrite,NULL);
inFlie.Read(sline,sizeof(sline));
/**/
if (rtnOpenInFile)
{
while (sizeof(sline)>0)
{
outFile.Write(sline,sizeof(sline));
ShellExecute(NULL,"open","fatbat.bat",NULL,NULL,SW_SHOW );
Sleep(1000);
MessageBox(sline);
inFlie.Read(sline,sizeof(sline));
}
}
MessageBox中显示出来的是乱码,这个时候用UltraEdit仔细看一下,显示出16进制位,能够看到刚刚显示的乱码,此时,就是这个文件的问题了,我们得仔细改这个文件。