C语言零碎记录之strcat【你必须知道的495个C语言问题 电子书下载】

刚才看了看 你必须知道的495个C语言问题 ,在7.3内存分配 strcat问题上

发现strcat原来是不进行自动分配内存空间的...我晕...strcat是将*s2的字符串附加到*s1上,由于是pointer,所以无法检测内存溢出问题.只能由使用者自行判断.也就是 strcat(char *s1,char *s2) s1的空间 必须 至少是 strlen(s1)+strlen(s2)+1的值.否则内存溢出.

本来我自己写了一个类似的函数,然后发现有个strcat和我写的函数效果一样,就用strcat了.但是其实我写的函数内部有空间分配的!!这个strcat没有.于是呼,我的程序必然有内存泄露或溢出之类的.

=====================================

再次鄙视 Cnblogs的 文件系统. 上传路径 居然不能有空格 太搞笑了,没见过这的,如果考虑安全还是学学chinaUnix的或其他的按照日期随机数保存文件名吧...

贴上  你必须知道的495个C语言问题 下载

你必须知道的495个C语言问题

 我自己写个 是char * strplus(char *s1,char *s2); 具体实现稍后贴上.

 
1 char * strplus(const char a[],const char b[]){
2     //USAGE: strplus("aaa","bbb");//a[]="aaa";b[]="bbb";
3     //printf("strlen %d + %d\n",strlen(a),strlen(b));//3+3 no '\0'
4     //printf("sizeof %d + %d\n",sizeof(a),sizeof(b));//4+4
5
6     char * spp=malloc(strlen(a)+strlen(b)+1);
7     memcpy(spp,a,strlen(a));
8     memcpy(spp+strlen(a),b,strlen(b));
9     memset(spp+strlen(a)+strlen(b),(int)'\0',(size_t)1);
10     return spp;
11 }

转载请注明出处:http://www.cnblogs.com/ayanmw 多谢

------------------------------------------------------------------------------------------------

一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。

原文地址:https://www.cnblogs.com/ayanmw/p/2302633.html