| 查看: 1246 | 回复: 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。 性能上它们不一定有多大差别。 |
» 猜你喜欢
交叉科学部支持青年基金,对三无青椒是个机会吗?
已经有3人回复
国家级人才课题组招收2026年入学博士
已经有5人回复
Fe3O4@SiO2合成
已经有6人回复
青年基金C终止
已经有4人回复
青椒八年已不青,大家都被折磨成啥样了?
已经有7人回复
为什么nbs上溴 没有产物点出现呢
已经有10人回复
救命帖
已经有11人回复
招博士
已经有5人回复
26申博求博导推荐-遥感图像处理方向
已经有4人回复
限项规定
已经有7人回复
» 抢金币啦!回帖就可以得到:
西北工业大学民航学院复合材料领域招聘两名博后
+1/88
美国R1大学--德克萨斯大学埃尔帕索分校(UTEP) 土木、环境与建筑工程系 博士招生
+1/84
“超分子材料交叉研究团队”联合诚聘博士后 [清华/吉大/复旦/北大]
+1/80
南方医科大学发育生物学教研室夏来新教授课题组招收26级博士研究生
+1/77
深圳大学信息功能聚合物电介质方向“申请-考核制”博士生招生
+1/75
深圳大学张雷教授课题组诚聘博士后
+1/74
大连理工大学智能系统实验室优秀硕博研究生招生
+1/72
自驾淄博回四川遂宁过年,寻找小伙伴一起
+1/61
华南理工大学(985、广州) 氢能源技术课题组诚招博士后(不限专业)
+1/49
西交利物浦大学黄彪院士招收26年全奖博士生1名(工业智能方向)
+1/29
中国科学院上海光学精密机械研究所 特种强激光薄膜课题组
+1/28
2026年天津大学杰青团队招收化学合成、计算机和器件的方面博士
+1/27
武汉大学博士生/直博生招聘(微纳光驱动与片上光子学)
+5/25
法国斯特拉斯堡大学有机光伏全奖博士招聘
+1/16
英国埃克塞特大学联合培养博士,访问学者, 博后依托申请
+1/6
福建师范大学柔性电子学院 院士团队招2026级博士 光电器件、发光传感忆阻器
+1/3
顾敏院士课题组招收2026级光学工程专业博士研究生-上海理工大学智能科技学院
+1/3
换工作
+1/2
【博士后/科研助理招聘-北京理工大学-集成电路与电子学院-国家杰青团队】
+1/2
中山大学农业与生物技术学院周潇峰课题组诚聘微生物/植物病理学方向科研助理
+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













回复此楼