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。
相关文章推荐
- C语言 不使用strcat函数实现连接两个字符串功能
- C语言字符串连接的实现
- C语言中如何使用宏连接多个字符串(#和##的用法)
- 实现两个字符串的连接(strcat函数)
- strcat 连接字符串,c语言实现
- C语言 编写函数实现字符串追加,不允许调用strcat函数。
- 【c语言】my_strcat实现字符串连接
- 【c语言】将两个字符串连接起来,不要用strcat函数
- 使用 “+”号实现多个字符串的连接
- 字符串连接(c语言实现)
- 字符串连接(c语言实现)
- C语言实现字符串拷贝 拷贝指定长度字符串 字符串连接
- 【C语言】如何实现多行字符串的输入 并 将文本打印在屏幕上?
- C语言实现linux网卡连接检测
- C语言实现计算文件和字符串md5值
- C语言现代方法之实现字符串的替换
- 【C语言】编写函数实现字符串旋转
- C语言字符串操作函数实现
- 重谈字符串连接性能(中):细节实现
- ARM汇编程序---C语言调用ARM汇编实现字符串的拷贝