| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:昨天看的道题目,试了下,两个程序,第一个貌似正常,结果输出数组越界,第 ...
只看楼主 加入收藏
lianjiecuowu
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:152
专家分:107
注 册:2011-5-20
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:3 
昨天看的道题目,试了下,两个程序,第一个貌似正常,结果输出数组越界,第二个稍微改动,程序崩溃....求助....
已知 strcpy函数的原型是 char *strcpy (char *strDest,const char *strSrc);
其中strDest是目的字符串  strSrc是源字符串,不能调用C++/C的字符串库函数
写出strcpy函数???
char *strcpy (char *strDest,const char *strSrc)
上面是题目

#include<iostream>
using namespace std;
char *strcpy (char *strDest,const char *strSrc);
int main()
{
    char *s1="hello word";
    char*s2=new char[strlen(s1)+1];
    strcpy(s2,s1);
    cout<<s1<<endl;
    cout<<s2<<endl;
    system("pause");
    return 0;
}
char *strcpy (char *strDest,const char *strSrc)
{
     int i;
     for(i=0;i<strlen(strSrc);i++)
     strDest[i]=strSrc[i];
     return strDest;
}
输出来的结果:hello word
hello wordrosoftP葑勳O
请按任意键继续. . .求解释




改动后:




#include<iostream>
using namespace std;
char *strcpy (char *strDest,const char *strSrc);
int main()
{
    char *s1;
    cin>>s1;
    for(int j=0;j<strlen(s1);j++)
    cout<<s1[j];
    char*s2=new char[strlen(s1)+1];
    strcpy(s2,s1);
    cout<<s2<<endl;
    system("pause");
    return 0;
}
char *strcpy (char *strDest,const char *strSrc)
{
     int i;
     for(i=0;i<strlen(strSrc);i++)
     strDest[i]=strSrc[i];
     return strDest;
}
程序崩溃.....求助.....
搜索更多相关主题的帖子: system return 字符串 hello word 
2011-06-11 07:45
wyhaoshuai
Rank: 2
等 级:论坛游民
帖 子:5
专家分:44
注 册:2011-6-9
收藏
得分:10 
#include<iostream>
using namespace std;
char *strcpyy (char *strDest,const char *strSrc);
int main()
{
    char *s1=new char;
    cin>>s1;
    for(int j=0;j<strlen(s1);j++)
    cout<<s1[j];
    char*s2=new char[strlen(s1)];
    strcpyy(s2,s1);
    cout<<s2<<endl;
    system("pause");
    return 0;
}
char *strcpyy (char *strDest,const char *strSrc)
{
     int i;
     for(i=0;i<strlen(strSrc);i++)
     strDest[i]=strSrc[i];
     return strDest;
}
2011-06-11 09:08
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
收藏
得分:10 
不看别的,你的strcpy就写错了,字符串是已\0结束,你得到的肯定不是以这个结束
2011-06-12 00:00
lianjiecuowu
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:152
专家分:107
注 册:2011-5-20
收藏
得分:0 
回复 3楼 ljt
应该是吧....我仔细看过啦,没错啊应该.strlen(s1)得到的是结束符前面的字符串的长度,加一不就是连上结束符的总长度?好晕那 ,还请看看哪里出错啊...

Sharp your mind!
2011-06-12 07:46
快速回复:昨天看的道题目,试了下,两个程序,第一个貌似正常,结果输出数组越界 ...
数据加载中...
 
   



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

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