博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
strcpy函数的用法
阅读量:4030 次
发布时间:2019-05-24

本文共 980 字,大约阅读时间需要 3 分钟。

strcpy(s1,s2);strcpy函数的意思是:把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy.

这样s1在内存中的存放为:ch\0;
在cout<<s1<<endl时,结果为ch;事实上,在内存里面是这样的存储结构:ch\0na

如果说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开始地址                       
     }
}//就这个算法看来是多余.

 

#include <iostream>

using namespace std;
int main(int argc,char *argv[])
{
char s1[6]="china" ,s2[3]="ch";
cout<<s1<<endl;                    //china
cout<<strlen(s1)<<endl;         //5
cout<<sizeof(s1)<<endl;         //6
strcpy(s1,s2);
cout<<s1<<endl;                    //ch

for (int i=0;i<5;i++)
{
   cout<<s1[i]<<endl;
}
cout<<strlen(s1)<<endl;         //2
cout<<sizeof(s1)<<endl;         //6
return 0;
}

转载地址:http://lyhbi.baihongyu.com/

你可能感兴趣的文章
系统架构:Web应用架构的新趋势---前端和后端分离的一点想法
查看>>
JVM最简生存指南
查看>>
漂亮的代码,糟糕的行为——解决Java运行时的内存问题
查看>>
Java的对象驻留
查看>>
自己动手写GC
查看>>
Java 8新特性终极指南
查看>>
logback高级特性使用(二) 自定义Pattern模板
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
可扩展、高可用服务网络设计方案
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++指针常量与常量指针详解
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
STL::deque以及由其实现的queue和stack
查看>>
CS4344驱动
查看>>
WAV文件解析
查看>>