c语言连接多个字符串(strcat函数实现)

    想要用c语言实现字符串的连接,尤其是多个字符串的连接,由于不能直接用“+”相连,其实还是比较麻烦的。本人初学,接触到的字符串连接方法主要有两种:1)用sprintf()函数;2)多次应用strcat()函数。现在对strcat方法做一总结。
    写一段小例子,同时说明一些注意事项。

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

int main(void)
{
	char *str1 = "Hello";	//(1)
	char *str2 = "my";			
	char *str3="program1";			
	char *temp;		//用于储存最终生成的字符串
	
	temp = (char *)malloc(sizeof(char)*50);	//申请内存空间,此处申请大小为50个字符(char)的大小 (2)

	strcpy(temp,telNum);		//(3)
	
	strcat(temp,telId);
	strcat(temp,send_data);
	
	printf(temp);
	
	free(temp);		//(4)释放内存
	
	return 0;
}

 个人总结的,使用strcat函数的注意事项有以下几点;

(1)c语言中没有String类型,所以应声明为字符指针(char *)或字符数组(char[]);

(2)要为所需的内存分配足够的空间,否则会出现严重的错误。同时,分配的时候若想使用strlen()来确定内存大小时,要注意进行转换,因为内存中是以字节数来计算大小的,而strlen返回的只是字符串长度,如strlen("abc")返回的3,但是可能每个字符占两字节(不同系统有所不同),即内存大小应该为6。

(3)当为某变量分配内存空间后,应该进行初始化。字符串是以”\0"符号结尾的,所以strcat的执行过程是找到前一字符串中的“\0",再将第二个参数附着在后面(覆盖掉第一个参数的"\0")。但是有个问题,第一个字符串中“\0"的位置是不确定的,即你不知道第二个参数从什么位置插入,进而不知道应该分配多大的内存空间。所以需要对第一个参数初始化,即确定好”\0"的位置。三种方式:1)strcpy(temp,"") | 例子中的方式直接将参数telNum用strcpy赋给temp;2)*str=‘\0’;//此处单引号;3)*str=0;

(4)一定要把分配的内存释放掉。


    至此,想要连接任何字符串,只需在strcat()语句后继续叠加strcat语句既可以了,不过千万记住修改内存空间的分配大小。方法可能有点笨,不过能达到目的。至于利用sprintf的方法,网上很多,大家可自行google。嘿嘿,希望对和我一样的初学者能有所帮助吧~

附个链接,里面的讨论挺有帮助的:http://www.programfan.com/club/showpost.asp?id=26715

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值