社区
C++ 语言
帖子详情
关于strcpy
SendDlgItem
2009-03-11 09:45:34
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ )
{
}
return address ; // 2分
}
请问strcpy源码中为什么要引入一个新的char*变量(address)
...全文
143
10
打赏
收藏
关于strcpy
char *strcpy(char *strDest, const char *strSrc); { assert((strDest!=NULL) && (strSrc !=NULL)); char *address = strDest; while( (*strDest++ = * strSrc++) != ‘\0’ ) { } return address ; // 2分 } 请问strcpy源码中为什么要引入一个新的char*变量(address)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小G
2009-03-11
打赏
举报
回复
[Quote=引用 5 楼 flameearth 的回复:]
用来实现链式操作
char *str = strcpy( dst, ss );
[/Quote]
5楼正解
C底层库函数挺多这样子的技巧
比如:
extern void *memcpy(void *dest, void *src, unsigned int count);
zhangchaokun
2009-03-11
打赏
举报
回复
[Quote=引用 7 楼 hairetz 的回复:]
请问strcpy源码中为什么要引入一个新的char*变量(address)
操作习惯问题,传入来的指针最好别改变它,而是多声明一个指针来接收他,除非函数本身有改变该指针的需求.
[/Quote]
正解
大爷想要时光机
2009-03-11
打赏
举报
回复
相当于一个临时变量,保存首地址好返回给你。。。
猫已经找不回了
2009-03-11
打赏
举报
回复
请问strcpy源码中为什么要引入一个新的char*变量(address)
操作习惯问题,传入来的指针最好别改变它,而是多声明一个指针来接收他,除非函数本身有改变该指针的需求.
grellen
2009-03-11
打赏
举报
回复
保存初始地址,即目标串的首地址
flameearth
2009-03-11
打赏
举报
回复
用来实现链式操作
char *str = strcpy( dst, ss );
valuesun
2009-03-11
打赏
举报
回复
add存的是起始地址,最后返回的要是字符串头。str是复制条件变量。
yangch_nhcmo
2009-03-11
打赏
举报
回复
因为strDest在运算中有执行++的动作.其值不指向其首地址.引入address是为了返回其strDest的首地址
bitxinhai
2009-03-11
打赏
举报
回复
记录原来的地址,因为*strDest++
会改变指针strDest的指针值
chin_chen
2009-03-11
打赏
举报
回复
如果没有char *address = strDes;
*strDes ++ 将指针指向的位置自加,会改变strDes的值。如果return strDes将返回strDes的最后一个字符,并没有返回整个字符串。
address 相当于一个中间变量。无论strDes怎么变化,address始终为整个字符串(原来strDes地址的起始位置)。
strncpy,
strcpy
,sprintf,snprintf
strcpy
官方定义1.函数原型将源指向的C字符串复制到目标指向的数组中,包括终止空字符'\0'。(并在该点停止)。'\0'是什么?与空字符串的关系""为了避免溢出,目标指向的数组的大小应足够长,以包含与源相同的C字符串(包括终止的空字符),并且不应在内存中与源重叠。2.函数参数destination:指向要复制内容的目标数组的指针。source:指向要被copy的c字符串3.返回值返回目的地址destination。
strcpy
strcpy
函数的重写
strcpy
、wcscpy与_tcscpy关系
strcpy
_s与
strcpy
比较
C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如:char *
strcpy
(char *strDestination, const char *strSource); wchar_t *wcscpy(wchar_t *strDestination, const wchar_t *strSource); wcscpy()即为
strcpy
()的宽字符版本,与_T类似的,Visual C++提供了类似的同名函数:#ifdef UNICODE #define _tcsc
关于
strcpy
()
刚参加武汉烽火的笔试回来,其中一题要实现
strcpy
()函数,如果没猜错,应该是从林锐的《高质量C_C++编程》中借鉴,随手写了:char *
strcpy
(char * desc,char * src){ char *p; if(src == NULL) exit(0); if(desc == src) return desc; p = desc; while( *
strcpy
_s与
strcpy
例子: #include #include using namespace std; void Test(void) { char *str1=NULL; str1=new char[20]; char str[7];
strcpy
_s(str1,20,"hello world");//三个参数
strcpy
_s(str,"hello");//两个参数但如果:char *str=new char
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章