| 查看: 1319 | 回复: 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。 性能上它们不一定有多大差别。 |
» 猜你喜欢
职称论文投稿
已经有7人回复
中!中!中!
已经有4人回复
评委有多少概率知道其他专家手中有哪些人的本子?
已经有5人回复
基于自然哲学类比的风化壳型稀土矿
已经有7人回复
E0414, 我的本子有没有希望?
已经有17人回复
青A35岁以下通知答辩了吗
已经有4人回复
小城的小雨
已经有3人回复
看《给阿ma的情书》有感
已经有5人回复
国自然申请五篇代表作大比拼,感觉这个是最重要的
已经有4人回复
雷雨
已经有3人回复
» 抢金币啦!回帖就可以得到:
祈福面上中!中!中!
+2/904
山东征女友,坐标济南
+1/161
温州医科大学李校堃院士团队宋林涛/黄志锋课题组诚聘博士后
+1/75
上海985专排第一的软工学院课题组接收AI生物计算方向的推免保研硕士
+1/42
东南大学有机多孔功能材料团队(国家杰青团队)招收2027级推夏令营免硕士/直博生
+1/29
哈工大深圳-材料学院-招收申请审核制2027年春季/秋季入学博士生(2026年9月报名)
+1/28
中山大学智能工程学院【空间智能方向】招收2027年入学博士生
+2/24
澳大利亚西澳大学招收交通工程/智能交通方向博士生
+1/13
LED 户外 GOB 封装胶水
+1/8
东北师范大学荒漠与草地生态学方向诚聘博士后青年才俊
+1/8
墨尔本大学(26年QS19)招全奖博士/CSC博士(补齐全奖)/访问学者等-材料/生物医学等
+1/7
墨尔本大学(26年QS19)招全奖博士/CSC博士(补齐全奖)等-材料/生物电子/器官芯片等
+1/7
墨尔本大学(26年QS19)招全奖博士/CSC博士(补齐全奖)/访问学者等-材料/生物医学等
+1/5
西交利物浦大学/氮化镓基 CMOS 技术的物理驱动与人工智能增强方法/招博士研究生
+1/5
神经退行性疾病核心标志物 NFL:生物学意义与 MSD 超敏检测技术解析
+1/4
密苏里大学生物材料合成生物学博士后招聘
+1/4
密苏里大学生物材料合成生物学博士后招聘
+1/4
哈尔滨工业大学(深圳)赵怡潞课题组诚招博士后、2027学年博士生
+1/3
密苏里大学生物材料合成生物学博士后招聘
+1/1
知网普刊发了有用吗
+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











回复此楼