| 查看: 1310 | 回复: 2 | |||
[交流]
【讨论】strcat与strcpy的具体区别。。
|
|
看了很多解释,还是有点迷糊,希望高手解答下。 1. strcat()函数 不调用C++/C 的字符串库函数,请编写函数 strcat VC源码: char * __cdecl strcat (char * dst, const char * src) { char * cp = dst; while( *cp ) cp++; /* find end of dst */ while( *cp++ = *src++ ) ; /* Copy src to end of dst */ return( dst ); /* return dst */ } strcat()接受两个字符串参数。将第二个字符串的一份拷贝添加到第一个字符串的结尾,从而使第一个字符串成为一个新的组合字符串,第二个字符串不改变。 2. memset()函数 void *memset(void *s, char ch, unsigned n) 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 你刚分配的内存空间,或者是被你用过的内存空间里面的数据是不固定的 为了避免这些无用的数据给自己的程序带来影响,可以用memset把这些内存里面的数据置成某个数值 一般情况下是置0; /* MEMSET.C: This program uses memset to * set the first four bytes of buffer to "*". */ #include #include void main( void ) { char buffer[] = "This is a test of the memset function"; printf( "Before: %s\n", buffer ); memset( buffer, '*', 4 ); printf( "After: %s\n", buffer ); } 输出: Before: This is a test of the memset function After: **** is a test of the memset function 3. strcpy()函数 1.strcpy的实现代码 char*strcpy(char*strDest, const char*strSrc) { assert((strDest != NULL) && (strSrc != NULL)); char *address = strDest; while ((*strDest++ = *strSrc++) !='\0' '') continue; return address; } 2.memcpy的实现代码 void *memcpy(void *pvTo, const void *pvFrom, size_t size) { assert((pvTo != NULL) && (pvFrom != NULL)); // 使用断言 byte *pbTo = (byte *) pvTo; // 防止改变pvTo 的地址 byte *pbFrom = (byte *) pvFrom; // 防止改变pvFrom 的地址 while(size -- > 0 ) *pbTo ++ = *pbFrom ++ ; return pvTo; } strcpy只是复制字符串,但不限制复制的数量。很容易造成缓冲溢出。 strncpy要安全一些。 memcpy也可以用来在内存中复制数据,由于字符串是以零结尾的,所以对于在数据中包含零的数据只能用memcpy。 性能上它们不一定有多大差别。 |
» 猜你喜欢
26/27申博自荐
已经有10人回复
东北林业大学材料科学与工程学院“一流”A+学科国家级人才团队课题组招收2026级博士生
已经有3人回复
医学类期刊求推荐
已经有5人回复
生活琐事由它去
已经有4人回复
提交了我也来说说感想
已经有12人回复
青B发送上会通知了吗
已经有9人回复
西安交大新媒学院副院长用撤稿论文结题
已经有6人回复
论文撤稿了
已经有8人回复
化学专业申博
已经有4人回复
某211大学教师把个人教师官方主页改成:我跑了我跑了我跑了!官宣跑路!
已经有5人回复
» 抢金币啦!回帖就可以得到:
祝大家学业有成,工作顺利,生意兴隆
+1/940
坐标北京,诚征女友
+2/398
西安电子科技大学保研挑战高速IP设计NVMe,RDMA及NVMe-oF
+1/284
诚邀津门师者共研
+1/77
福州大学化工学院电子化学品团队博士招生,还有一个名额!
+1/75
【急招】 北京工业大学 第二批博士申请-杰青课题组1-2名额,25日截止!!
+1/40
湖南师范大学(211)—招收材料专业“申请-考核”制博士(有光学经验者优先)
+1/32
安徽大学俞洋洋课题组招收化学方向博士生1人
+1/28
海南医科大学肖华教授(国家级青年人才)招收博士生1名---报名从速
+4/16
QQQ跌破700後資金依然回流,這個位置其實沒那麼弱。
+1/10
吸波粉体电磁参数模具加工
+1/9
上海交通大学化学化工学院张智涛课题组诚聘博士后
+1/9
英国伯明翰大学工程学院招收国际全奖博士生(closing soon请尽快联系)
+1/5
海南大学博士研究生第二批招生 脑空间信息学团队(图像计算方向)
+1/5
紧急招收2026年秋季入学博士生1名(河北工大/北京科技大学联合 增材制造/生物材料)
+1/5
急招!陕西科技大学,轻工科学与工程学院,张素风教授,2026年博士招生
+1/4
【有偿访谈招募】高才通来港后,你过得还好吗?
+1/2
【有偿访谈招募】高才通来港后,你过得还好吗?
+1/2
北航杭州国际校区招聘3D 打印,陶瓷,力学等方向博士后
+1/1
郑州大学2026年材料科学与工程学术博士有名额,这几天报名!有意向联系!
+1/1
2楼2010-12-13 11:44:39
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):谢谢参与应助! 2010-12-13 22:02:40
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):谢谢参与应助! 2010-12-13 22:02:40
|
本帖内容被屏蔽 |
3楼2010-12-13 14:25:02












回复此楼