这是一道测试题,不要库函数,编写一个类似strcpy的函数。
我编写的代码如下:
#include "iostream.h"
#include "string.h"
#include "stdlib.h"
void stringcpy(char *Deschr,char *Srcchr)
{
int length=strlen(Srcchr);
for (int i=0;i<length;i++)
{
*Deschr++=*Srcchr++;
}
}
void main()
{
char *str=NULL;
stringcpy(str,"hello");
cout<<str<<endl;
}编译能通过,可是运行的时候报错,是怎么回事了?
谢谢!

解决方案 »

  1.   

    char *str=NULL;好像都没申请空间...
      

  2.   

    很明显,你并没有为你的Deschr参数分配过空间啊,你需要在使用之前对它进行初始化;
    void main()
    {
    char *str=NULL;
             str = new char[strlen("hello") + 1];
             memset(str,'\0',strlen("hello") + 1);
    stringcpy(str,"hello");
    cout<<str<<endl;
             delete[] str;
    }
      

  3.   

    main中的str指向一个空地址,然后往这个地址下赋值,肯定是错的。
    改成 char str[10];
      

  4.   

    void strcpy(char *to, const char *from)
    {
       while(*to++=*from++);
    }
      

  5.   

    首先想告诉你的是,你都没有为Deschr分配内存
    第二出题的人绝对不是要你写一个如此简单的程序吧