码迷,mamicode.com
首页 > 编程语言 > 详细

程序猿之---C语言细节5

时间:2014-11-03 22:33:51      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:c语言   字符串内存分配   合并字符串   

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

#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;
}
输出:

bubuko.com,布布扣

程序猿之---C语言细节5

标签:c语言   字符串内存分配   合并字符串   

原文地址:http://blog.csdn.net/human_evolution/article/details/40748821

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!