| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 675 人关注过本帖
标题:关于字符串的剪裁的问题。
只看楼主 加入收藏
zqmillet
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2008-7-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
关于字符串的剪裁的问题。
    char * str;
    str = "0123456789";

我现在想把6以后的部分去掉,只留下“0123456”,我是这样写的代码:
    *(str + 7) = '\0';

可以实现功能,但是我想问下,6以后的那部分内存系统会回收吗?
如果不能回收要怎样修改代码?
搜索更多相关主题的帖子: 字符串 
2011-01-28 16:06
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:5 
最好不要直接修改源字符串。
读一下strncpy这些函数的源代码,看看别人是如何实现的。

我们都在路上。。。。。
2011-01-28 17:56
zqmillet
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2008-7-20
收藏
得分:0 
以下是引用hellovfp在2011-1-28 17:56:05的发言:

最好不要直接修改源字符串。
读一下strncpy这些函数的源代码,看看别人是如何实现的。

百度了下,找到了一段代码:
程序代码:
char * strcpy(char * strDest,const char * strSrc)

        {

                if ((strDest==NULL)||(strSrc==NULL)) //[1]

                        throw "Invalid argument(s)"; //[2]

                char * strDestCopy=strDest;  //[3]

                while ((*strDest++=*strSrc++)!='\0'); //[4]

                return strDestCopy;

        }


这段代码我是看懂了,但是
我就是想知道6之后的内存会浪费了吗?
2011-01-28 19:46
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
字符串常量应该不能改吧?你那个代码编译或者执行的时候没什么问题吗?
2011-01-28 22:14
zqmillet
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2008-7-20
收藏
得分:0 
以下是引用pangding在2011-1-28 22:14:34的发言:

字符串常量应该不能改吧?你那个代码编译或者执行的时候没什么问题吗?

程序代码:
/*

 * 去掉右边的字符c

 */
void Formula::TrimEnd (const char c)
{
    for (int i = strlen(formulaString) - 1 ; i >= 0 ; i--)
    {
        if (*(formulaString + i) != c)
        {
            *(formulaString + i + 1) = '\0'; 
            break;
        }
    }
    return;
}

formulaString是Formula的成员变量
类型为char * formulaString
我试着写TrimEnd这个函数,其中
*(formulaString + i + 1) = '\0'; 

把后面的部分去掉了。
编译器是vc6.0,通过编译,无错无警告,功能也能实现
我担心的是'\0'后面的部分会不会造成内存浪费?
2011-01-28 22:40
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
虽然系统不回收,但栈上的空间不怕浪费。只是字符串常量可能在只读段里,一般改不了。能改就好,没什么问题。
2011-01-28 22:59
zqmillet
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2008-7-20
收藏
得分:0 
以下是引用pangding在2011-1-28 22:59:09的发言:

虽然系统不回收,但栈上的空间不怕浪费。只是字符串常量可能在只读段里,一般改不了。能改就好,没什么问题。

谢谢热心解答,结贴喽~
2011-01-28 23:06
快速回复:关于字符串的剪裁的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021568 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved