void mystrcpy(char *dest,const char *source)
{
while(*dest++=*source++);
}
为什么在vc中不能对*dest赋值。而此代码可以在标准c中通过编译??

解决方案 »

  1.   

    编译能通过,可是在调用这个函数时
    char *a="abc";
    char *b;
    mystrcpy(b,a);就会出错。
    如果改为
    char *a="abc";
    char b[10];
    mystrcpy(b,a);
    就可以了。不知为什么??
      

  2.   

    #include "stdio.h"
    void f(char *s)
    {
    char *p=s;
    while(*s)
    {
    if(*s>='0' && *s<='9')
    {
      s++;
    }
    else
    {
    *p=*s;
    p++;
    s++;
    *p='\0';
    }
    }
    }
    main()
    {
    char *s1="123abc";
    f(s1);
    printf("%s\n",s1);
    }
    如下程序,在c下可以用,输出"abc"
    但在,vc下,会出现错误,调试时*p=*s;语句无法执行,请问这是为什么??
      

  3.   

    dest没有分配空间
    char *a = "abc"
    char* b = new char[4];
    mystrcpy(b,a);
      

  4.   

    因为char *b只是定义了一个字符指针,并没有分配空间,所以直接赋值会出错
    而char b[10],定义了一个字符数组,已经分配了10个字节的空间
      

  5.   

    happyparrot(快乐鹦鹉):
    修改了语句char *b="sss";为b分配了空间,怎么还是不行???
    还可以怎么分配空间??
      

  6.   

    char *p = new char[100];//一定要new。
    使用完后
    delete p;
    windows的自我空间内存保护行为。
      

  7.   

    char *b="sss";还是没有为b分配空间
    将b指向了一个const,不可能修改b中的数据的