您的位置:首页 > 编程语言 > C语言/C++

程序猿之---C语言细节5(字符串内存分配、合并两个字符串)

2014-11-03 21:55 369 查看

主要内容:字符串内存分配、合并两个字符串

一、字符串内存分配

见程序举例

二、合并两个字符串

见程序举例

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
/*
*  字符串操作:内存分配
*  字符串s和t,希望将这两个字符串连接成单个字符串r
*/
char* s = "abc";
char* t = "def";
// 方法一: 缺点:1、不能确定r指向何处;
//                2、同时不知道r所指向的内存空间是否有可容纳字符串的大小,并且是已经先分配的而不是用的是别程序使用的内存
#if 0
char* r;
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
#elseif 0
// 方法二: 缺点:s和t字符串加起来的大小不要超过r大小就能正常工作
char r[100];   // 预先指定了大小
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
#elseif 0
//方法三:  缺点: 1、malloc函数可能无法提供请求的内存
//                2、r分配的内存在使用完之后要及时释放
//		      3、malloc并未分配足够的内存,字符串需要'\0' 结束
char *r;
r = malloc(strlen(s) + strlen(r));
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
#else
//方法四:
char *r;
r = malloc(strlen(s) + strlen(r) + 1);	//为字符串'\0'分配内存
if (!r) // 判断是否分配成功
{
printf("malloc failed!\n");
exit(1);
}
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
free(r);  // 释放内存
#endif

return 0;
}
输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐