| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2565 人关注过本帖
标题:用C自己写一个string copy函数 帮忙看看哪里写的不对
只看楼主 加入收藏
lmyouya
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-10-17
收藏
得分:0 
[bo][un]newyj[/un] 在 2008-10-23 23:30 的发言:[/bo]

不知道 ls是否运行过 这段代码
new出来的 在 函数结束时 并没有 被撤消 所以 可以返回
不知道 你所说的 错误 是否 就是这个?
还有最后那个输出的i是写错了 并不是 有意 写成i的


哦,真聪明!
我都说错了,不好意思!

new是可返回的!  
可pstr指向的地址不再是刚开始的new的地址,返回好像会栈溢出. 好像我真正想说的是这个意思!

还有最后那个输出的i是写错了 并不是 有意 写成i的
不明白?

吖吖走了
2008-10-24 11:24
lmyouya
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-10-17
收藏
得分:0 
[bo][un]Go2009[/un] 在 2008-10-24 00:39 的发言:[/bo]

*ps='\0';
ps=a;
请问上面两句是什么意思?在这个程序里是什么作用。我不是很明白。谢谢···


字符串结束:*ps='\0';
ps=a; ps指向a的第一个字母的地址.

吖吖走了
2008-10-24 11:26
Go2009
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-19
收藏
得分:0 
[bo][un]lmyouya[/un] 在 2008-10-24 11:26 的发言:[/bo]



字符串结束:*ps='\0';
ps=a; ps指向a的第一个字母的地址.

 
根据你写的这个程序,ps指向a的第一个字母的地址,是不是a至少应分配8个空间,就是a[x]中x>=8?谢谢···我对这个不是很明白。
2008-10-24 12:06
braveboy2008
Rank: 1
等 级:新手上路
威 望:1
帖 子:21
专家分:0
注 册:2008-10-14
收藏
得分:0 
最好将char *pstr=new char[20]改为char *pstr = new char[strlen(i)+1]这样即能适合不同长度的字符串,也不会浪费多余自由存储区;
2008-10-24 13:12
lockhawk
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2008-9-17
收藏
得分:0 
为什么可以直接输出cout<<ps<<endl; ??
不是说指针只是指向数组的第一个元素么?

人生最大痛苦:虽然不明白你们说什么,但还是要听!
2008-10-24 14:08
lpf11230108
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-6-17
收藏
得分:0 
#include<iostream.h>
#include<string.h>
#include<assert.h>
void stringcopy(const char *p)
{
    char *ps=new char[strlen(p)+1];
    char *rs=ps;
    assert((ps!=NULL)&&(p!=NULL));
    while((*p!='\0')&&(*ps++=*p++));
    *ps='\0';
    cout<<rs<<endl;
    delete [] rs;
}
void main()
{
    char *p="abcdeffg";
    stringcopy(p);
}
2008-10-24 15:19
快速回复:用C自己写一个string copy函数 帮忙看看哪里写的不对
数据加载中...
 
   



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

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