标题:[求助]急......关于strcpy函数
只看楼主
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
 问题点数:0 回复次数:13 
[求助]急......关于strcpy函数

自定义个strcpy函数,编程如下:
#include<iostream.h>
#include<iostream.h>

char *strcpy(char *dest,const char *scr);
void main()
{
char *from="asdasdasd";
char *to;
if((to=new char[sizeof(from)+1])==NULL)
{
cout<<"not neough memory.";
exit(1);
}
strcpy(to,from);
cout<<from<<endl
<<to<<endl;
delete[]to;
}

char *strcpy(char *dest,const char *scr)
{
if(scr==NULL)
cout<<"原字符串为空."<<endl;
else
{
while(*scr!='\0')
*(dest++)=*(scr++);
*dest='\0';
}
return dest;
}

那里错了??


[此贴子已经被作者于2007-10-21 12:47:12编辑过]

搜索更多相关主题的帖子: strcpy函数 char scr const dest 
2007-10-19 21:06
duffebear
Rank: 1
等 级:新手上路
威 望:2
帖 子:172
专家分:0
注 册:2007-1-30
得分:0 
char *strcpy(char *dest,char *scr)
{
for(;*scr!='\0';scr++,dest++)
*dest=*scr;
*dest='\0';
return dest;
}

死后定当长眠 生前何须久睡
2007-10-19 21:26
duffebear
Rank: 1
等 级:新手上路
威 望:2
帖 子:172
专家分:0
注 册:2007-1-30
得分:0 
strcpy(to,from); from和to都被修改了
cout<<from<<endl
<<to<<endl;

死后定当长眠 生前何须久睡
2007-10-19 21:30
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
得分:0 
from 怎么改变了??

★孤独的人是可耻的★
2007-10-19 22:03
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
得分:0 

知道的朋友帮帮忙~
先谢谢~


★孤独的人是可耻的★
2007-10-20 22:03
Janlex
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:303
专家分:0
注 册:2006-9-12
得分:0 
char *from="123ASDASDASD";
char *to="asd";
改成
char from[20]="123ASDASDASD";
char to[20]="asd";

★★★★★欢迎光临我的博客 ★★★★★
http://www.
2007-10-20 22:54
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
得分:0 
以下是引用Janlex在2007-10-20 22:54:32的发言:
char *from="123ASDASDASD";
char *to="asd";

改成
char from[20]="123ASDASDASD";
char to[20]="asd";

有何不同?是因红色部分要单独分配内存吗?

那我这样写:
#include<iostream.h>

char *strcpy(char *dest,const char *scr);
void main()
{
char *from="asdasdasd";
char *to;
if((to=new char[sizeof(from)+1])==NULL)
{
cout<<"not neough memory.";
return;
}
strcpy(to,from);
cout<<from<<endl
<<to<<endl;
delete(to);
}

char *strcpy(char *dest,const char *scr)
{
if(scr==NULL)
cout<<"原字符串为空."<<endl;
else
{
while(*scr!='\0')
*(dest++)=*(scr++);
*dest='\0';
}
return dest;
}
此程序可以运行出结果,但是就在运行处报错了~是否是因为蓝色部分我改为return;的原因吗?

再有就是蓝色改为exit(1);为何就出错说:'exit' : undeclared identifier??缺少头文件吗?可new函数不用头文件的啊.

[此贴子已经被作者于2007-10-21 12:48:42编辑过]


★孤独的人是可耻的★
2007-10-20 23:23
Janlex
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:303
专家分:0
注 册:2006-9-12
得分:0 
if((to=new char[strlen(from)+1])==NULL)

★★★★★欢迎光临我的博客 ★★★★★
http://www.
2007-10-21 00:24
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
得分:0 
以下是引用Janlex在2007-10-21 0:24:56的发言:
if((to=new char[strlen(from)+1])==NULL)

恩,谢谢,你指出的是对的~但问题好像不在这.
那如果分配不是数组的话,比如:分配一个整形变量的空间,定义大小时是这样if((to=new int (sizeof(int)))==NULL),还是和数组一样用[].


★孤独的人是可耻的★
2007-10-21 12:29
Janlex
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:303
专家分:0
注 册:2006-9-12
得分:0 
1, 只有字符串才用strcpy
2, new int()与new int[]完成是两个概念

★★★★★欢迎光临我的博客 ★★★★★
http://www.
2007-10-21 14:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-179150-1-1.html




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

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