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

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

2014-01-07 13:33 609 查看
想要用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: