Chinaunix首页 | 论坛 | 博客
  • 博客访问: 453470
  • 博文数量: 73
  • 博客积分: 1170
  • 博客等级: 少尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-20 15:48
文章分类

全部博文(73)

文章存档

2013年(9)

2012年(64)

我的朋友

分类: C/C++

2012-06-26 12:57:14

strcpy(s1,s2);strcpy函数的意思是:把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy.
这样s1在内存中的存放为:ch\0;
在cout<

如果说s1的长度是6,那是错误的.你没有弄清strlen与sizeof的意思。
strlen函数的意思是测试字符串的字符长度,不含字符串结束标志的。
sizeof是个运算符,它的结果是字符串在内存中的所占字节大小,它要把\0算进去的。

strcpy函数原型1
char * strcpy(char *a,char *b)
{ while((*(a++)=*(b++))!=0);return a;}

strcpy函数原型2
char *strcpy(char *strDest, const char *strSrc);//strDest为目标,strSrc为源
{
     assert((strDest!=NULL) && (strSrc !=NULL)); //如果两个为空则不用复制,直接中止
     char *address = strDest;       //用address指向strDest开始地址
     while( (*strDest++ = * strSrc++) != ‘\0’ ) //复制,直到源串结束;
        NULL ; //空操作
     return address ;    //返回strDest开始地址                       
     }
}

使用assert前需要包含头文件assert.h,如果表达式的值为假,整个程序将退出,并输出一条错误信息。如果表达式的值为真则继续执行后面的语句。

  

  #include

  #include 

  char * strcpy(char * strDest ,const char *strSrc)

  {

  assert((strDest!=NULL) && (strSrc !=NULL));

  char * strDestCopy=strDest;

  while ((*strDest++=*strSrc++)!='\0');

  return strDestCopy;

  }

  void main()

  {

  char a[20], c[]="i am teacher!";

  strcpy(a,c);

  cout<

  }

阅读(9468) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~