回 帖 发 新 帖 刷新版面

主题:字符串问题,共同研究的进

我想实现一个功能是当输入字符串不是OK是,连续的输入输出字符串,当输入OK时停止
这么写怎么不行?
                      char * str;
         str=new char(100);             
         for(;str!="ok";)
         {          
                       str=gets(str);    
         }
  谁能讲一下啊

回复列表 (共1个回复)

沙发

 char * str;
 str=new char(100);             
 for(;str!="ok";)
 {          
     str=gets(str);    
 }

这么写肯定不对啦!首先你new出来100个字节的空间,然后让str指向这块空间,这个是没有错的,问题出在当你第一次输入一串字符的时候是没有问题的.假设你第一次输入的不是"ok",假设你输入的是"no ok",然后第二次进入循环,这时候str指向"no ok"这个字符串的首地址,你再一次输入的时候会用你第二次输入的将"no ok"替换掉,等于strcpy了一次,你再输也是同样的结果;假设你第一次输入的是"ok",退出循环这个应该明白吧!

还有用new最后一定要delete一次  不然会造成内存泄漏的哦!
这种小程序用数组处理很简单  可以考虑下

我来回复

您尚未登录,请登录后再回复。点此登录或注册