我用的是VS2008; 编译通过了,我是初学者,不知道哪里有问题       
         int i,j,k;
char *q="我";
unsigned char qh,wh;
unsigned long offset;
qh=*q-0xa0;
wh=*(q+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32;
FILE *fp;
if (fopen_s(&fp,"hzk", "rb") == NULL) 
{
MessageBox(_T("Can not find file 'HZK16'"), _T("Error"));
return;
}
CString m_sfront=_T("1");
CString m_sback=_T("0");
char buffer[16][2];
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp);
for (i=0;i<16;i++)
{
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if (buffer[i][j]&(0xa8>>k))
m_sout+=m_sfront;
else
m_sout+=m_sback;
}
m_sout是输出编辑框成员变量运行时报错,不知道
Expression:(stream!=NULL)

解决方案 »

  1.   

    *q 是负数,导致指针乱指。建议改用:unsigned char *q;
      

  2.   

    谢谢你们的建议,这个问题已经解决,可是现在不懂怎么把
    CString m_sin转换成char *S,我试了强制转换
          char *s;
         s=LPTSTR(m_sin);
    还有 LPTSTR *s=m_sin.GetBuffer();
    m_sin.ReleaseBuffer();
    都编译错误,怎么办,请教下
      

  3.   

    char *S首先要有足够空间。
    然后sprintf(S,m_sin);
      

  4.   

    CString s ;
    (LPSTR)(LPCTSTR) s ;
    (LPSTR) s ;String GetBuffer() 出错? 
    本来返回类型就是你写的内容,还有你似乎对指针还不是很熟悉
     
      

  5.   

    是的,我刚学,不太熟
    原先用的是
    s = (LPTSTR)(LPCTSTR)m_sin;通不过
    当我直接赋值
    char *s=“xxxxxx”;
    通过可以运行
      

  6.   

    我参考了:
    CString str = L"中国";
    CHAR szText[32] = { 0};
    WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, str, str.GetLength(), szText, 32, NULL, NULL);
    解决了
    谢谢各位!
      

  7.   

    谁帮我讲下ANSI和UNICODE的区别,在使用UINCODE编码的情况下,应该注意些什么
    谢谢啦!