一个数组的问题,希望各位朋友帮忙

dreamchild 2003-08-25 01:39:28
我先定义一个数组
byte temp[8096] ;
然后经过一系列操作,使得一部分数组元素写入字符。
这时我转成CString写入文件:
{
CString b;
CStdioFile fi;
fi.Open("c:\\4.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
fi.Seek(0,CFile::end);
b=Temp;
fi.WriteString((LPCTSTR)b);

fi.Close();
}

这样子,会出现错误,正确的字符串写完后又出现一大堆相同的乱码。

后来我处理temp,写成
byte temp[8096] ;
memset(temp,'\0',8096); //添加本行
再依写入文件,发现不会再出错了,
我这样子用memset初始化的想法有没有错?我感觉上自己没有弄错,但不太敢肯定,希望高手们帮我see & look
...全文
39 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyong0371 2003-08-25
  • 打赏
  • 举报
回复
virtual void WriteString( LPCTSTR lpsz );
throw( CFileException );

Parameters

lpsz

Specifies a pointer to a buffer containing a null-terminated text string.

是需要初始化
flinming 2003-08-25
  • 打赏
  • 举报
回复
up
goooool 2003-08-25
  • 打赏
  • 举报
回复
你的想法没有错,你开始出错的原因是你的temp数组没有初始化,而当你向里面写数据时,如果没有写满,最后又没有添加'\0'的话,就会出现你的问题。
whoishere 2003-08-25
  • 打赏
  • 举报
回复
WriteString写入的字符串,而字符串是要以'\0'(即0)结尾的。
在你没有进行memset时,系统就依次写入temp中的内容,直至碰到第一个'\0'为止,于是正确的字符串写完后又出现一大堆相同的乱码。
而你使用memset,实际上是加上了字符串结束符'\0'

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧