strcpy函数使用方法以及底层实现
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>
#include <cstring>
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; //c h n a
}
cout << strlen(s1) << endl; //2
cout << sizeof(s1) << endl; //6
return 0;
}
strcpy函数使用方法以及底层实现的更多相关文章
- strcpy函数和strncpy函数的区别
strcpy函数和strncpy函数的原型介绍在我的另一篇文章中介绍了,见strcpy,strncpy,strlen等函数原型 strcpy:字串复制 原型:char *strcpy(char *de ...
- memcpy、memmove、memset及strcpy函数实现和理解
memcpy.memmove.memset及strcpy函数实现和理解 关于memcpy memcpy是C和C++ 中的内存拷贝函数,在C中所需的头文件是#include<string.h> ...
- Matlab中函数定义方法
Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...
- Oracle数据库中调用Java类开发存储过程、函数的方法
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日 浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...
- String类中的一些函数使用方法
最常用的就是Length()函数了,求字符串的长度 String s="";int i=s.length();i结果为0. 如果是String s=null;int i=s.len ...
- strcpy函数的实现
strcpy函数的实现 大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是: char *my_strcpy(char *dst,const char *src) { a ...
- FastReport里面正确调用函数的方法
FastReport里面正确调用函数的方法 错误: [FormatDateTime('yyyy-mm-dd',[frxDBDataset1."日期"])] --------- ...
- strcpy函数实现
1,strcpy最简便实现 char * strcpy_to (char *dst, const char *src) { char *address = dst; assert((dst != NU ...
- asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结
通常javascript代码可以与HTML标签一起直接放在前 端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把 ...
随机推荐
- Gym - 101981J The 2018 ICPC Asia Nanjing Regional Contest J.Prime Game 计数
题面 题意:1e6的数组(1<a[i]<1e6), mul (l,r) =l × (l+1) ×...× r, fac(l,r) 代表 mul(l,r) 中不同素因子的个数,求s ...
- MAC软连接
在mac上不设置环境变量有的时候也可以直接就访问到了某些文件.这个是为什么呢?答案是用了软连接. 1 查看加载文件 可以使用cat命令查看paths文件 cat etc/paths /usr/loca ...
- netty 引用计数对象(reference counted objects)
[Netty官方文档翻译]引用计数对象(reference counted objects) http://damacheng009.iteye.com/blog/2013657
- spring data jpa 、hibernate、jpa之间的关系
引用:http://blog.csdn.net/u014421556/article/details/52635000 hibernate作为JPA的实现. JPA规范与ORM框架之间的关系 ...
- 去除DialogFragment的背景阴影,背景色,标题栏
style中: <resources xmlns:android="http://schemas.android.com/apk/res/android"> <s ...
- hibernate_09_关联映射_多对一
多对一关联关系和上一篇讲的一对多关联关系的不同点主要体现在映射文件上. Student类: package com.imooc.entity; import java.io.Serializable; ...
- dubbo之本地存根
本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 ...
- mac系统下安装、启动、停止mongodb
mongodb是非关系型数据库,mysquel是关系型数据库,前者没有数据表这个说法,后者有 一. 下载nodejs,安装,一直到 node -v显示版本号,表示安装成功. 二. 本文主要讲解,安装包 ...
- 视频及MP3 播放浅析 Jplayer参数详细
初识jplayer插件是因为它的兼容性是最好的,可以兼容到IE6,官网上对它兼容性有很详细的说明 这个是我选择使用它的首要原因. 现在从需求上来了解它的使用方法吧.第一个需求:MP3格式的音频在网页播 ...
- 【转载】Java 集合详解
转载:https://www.cnblogs.com/ysocean/p/6555373.html 一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段 ...