void WriteString(CFile& file, char s[])
{
file.Write(s, 20);
}
bool ReadString(CFile& file, char s[])
{
return file.Read(s,20) == 20;
}
bool ReadString(CFile& file, char s[],int index)
{
file.Seek(index * 20, CFile::begin);
return file.Read(s,20) == 20;
}
void CTest5Dlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
CFile file;
file.Open(_T("C://test.out"),CFile::typeBinary | CFile::modeWrite | CFile::modeCreate); char s1[20] = "你好e";
char s2[20] = "jerr呵呵y";
char s3[20] = "even";
WriteString(file,s1);
WriteString(file,s2);
WriteString(file,s3);
file.Close(); file.Open(_T("C://test.out"),CFile::typeBinary |CFile::modeRead);
CString STR;
while(true)
{
char s[20];
if(!ReadString(file,s))
break;
wchar_t ss[20];
memset(ss, 0, sizeof(wchar_t)*20);
int len1 = MultiByteToWideChar (CP_ACP, 0, s, sizeof(s), NULL, 0);
MultiByteToWideChar (CP_ACP, 0, s, sizeof(s), ss, len1);
STR += ss;
}
AfxMessageBox(STR);
}STR得出的结果是“你好ejerr呵呵yeven”。打开C:/test.out看到的也是“你好e               jerr呵呵y           even”。不应该是乱码吗?怎么还是看得懂的文本呢?请教我写的哪里有问题,导致没有以二进制方式写入呢?
还是说字符串写入二进制文件,得到的结果和纯文本一样?