关于字符串问题!!(急!!!!!!!!!!)

AaronChan 2003-03-11 11:58:47
在程序中
char* sTempBuf=NULL;
sTempBuf=new char[7];
sTempBuf[0]='*';
for(int i=1;i<7;i++)
sTempBuf[i]=sDate[i-1];
…………
…………
delete sTempBuf;
sTempBuf=NULL;
可我调试看到sTempBuf中前面是我要的数据,后面是一排乱码,当然操作就不正确。
请高手帮我解答下!谢谢!
...全文
92 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinhighly 2003-03-11
  • 打赏
  • 举报
回复
呵呵,没结束付嘛
up
智慧的星球 2003-03-11
  • 打赏
  • 举报
回复
当然了,因为编译器是通过判断'\0'来确定字符串是否结束的,你定义了

char a[7] ,而你的最后一个元素 a [6] 不是'\0',所以编译器认为字符串没有结束继续访问导致乱码。

解决方法
char* sTempBuf=NULL;
sTempBuf=new char[8];
memset(sTempBuf,0,8);
sTempBuf[0]='*';
for(int i=1;i<7;i++)
sTempBuf[i]=sDate[i-1];
…………
…………
delete[] sTempBuf; <-----注意,顺便改你一个错。
sTempBuf=NULL;
lanbol 2003-03-11
  • 打赏
  • 举报
回复
new char[8];//重要,如果是7是非常危险的
sTempBuf[7]='\0'
具体在primer C++ 有详细论述
DoubleJiang 2003-03-11
  • 打赏
  • 举报
回复
sTempBuf=new char[7];
memset(sTempBuf, 0, 7);
codeproject 2003-03-11
  • 打赏
  • 举报
回复
new char[8];
sTempBuf[7]='\0'
AaronChan 2003-03-11
  • 打赏
  • 举报
回复
谢谢大家的指点!不过我的分不多不能每人都给哈!:)
明天去抢劫 2003-03-11
  • 打赏
  • 举报
回复
作为的好习惯sTempBuf = NULL,应该写.

如果后面继续作用sTempBuf如下:

if(!sTempBuf)
sTempBuf = new char[20];

就会达不到你想要的意思!!

或者delete [] sTempBuf会出错,但是delete 一个NULL的指针不会出错
friends1979 2003-03-11
  • 打赏
  • 举报
回复

sTempBuf=new char[8];
memset(sTempBuf,0,8*sizeof(char));
GoldWood 2003-03-11
  • 打赏
  • 举报
回复
楼上地说得对,字符串的结尾使用0x00,你结尾可能没用,但在调试时看到如果你的操作不会越界不要去管后面的乱码,因为字符串是用指针表示的,代表内存的开始地址如果没有结束符你自然可以看到后面的数据。

顺便问一下dreamsfly(追金):delete[] sTempBuf和delete sTempBuf有什么区别
ripyu 2003-03-11
  • 打赏
  • 举报
回复
sTempBuf=NULL这句不是必须的
dozoo 2003-03-11
  • 打赏
  • 举报
回复
无必要
AaronChan 2003-03-11
  • 打赏
  • 举报
回复
谢谢大家的帮助!
还有个小问题,sTempBuf=NULL这句是不是必须的?

16,472

社区成员

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

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

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