想要用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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)