日向曙光
2015-04-16 02:16
采纳率: 100%
浏览 2.1k
已采纳

VS2008 C++字符数组怎么在MessageBox中显示

FILE *pFile=fopen("1.txt","r");
TCHAR ch[100];
fread(ch,1,100,pFile);
fclose(pFile);
MessageBox(ch);
我想打开1.txt文件,里面有一句话,我使用了以上程序。但打开是乱码?怎么使用Messagebox函数![图片说明](https://img-ask.csdn.net/upload/201504/16/1429150570_653826.png)
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 开水 2015-04-16 08:22
    已采纳

    你代码不对吧,TCHAR是宽字符,占2个byte,安全的办法是sizeof计算下TCHAR的大小,再传给fread的第2个参数。

    同时,你写文件的代码里的fwrite,第2个参数也得用一样的写法,不然肯定出问题。

        FILE *pFile=fopen("1.txt","r");
        TCHAR ch[100];
        fread(ch,sizeof(TCHAR),100,pFile);
        fclose(pFile);
        MessageBox(ch);
    

    写文件的部分,你自己再看看。

    点赞 打赏 评论
  • 91program 2015-04-16 02:27

    首先,你的代码有代码出现没有字符串结束符的问题。
    其次,这个要看 1.txt 中文本的编码格式与工程的编码设置(多字节还是 Unicode),如果是 ASCII+多字节, 应该可以正确显示;

    点赞 打赏 评论
  • blownewbee 2015-04-16 02:34

    先调试下看看读取文件有没有乱码。

    点赞 打赏 评论
  • oyljerry 2015-04-16 04:18

    你的文件内容本身是什么编码,是不是UNICODE,估计是ANSI,而ch是宽字符,所以读入的时候就乱码了

    点赞 打赏 评论
  • 日向曙光 2015-04-16 14:36

    我发现是写入文件的程序有问题,改了一下就可以了

    点赞 打赏 评论

相关推荐 更多相似问题