linux c 字符串处理

来源:互联网 发布:爱剪辑软件下载 编辑:程序博客网 时间:2024/06/05 04:38

在C语言中经常需要处理内存问题,特别是在字符串操作时特别容易出错。

下面分析几种常见问题,都是经常引发内存错误或者Segmentation fault这些隐形错误。

1.比较几种字符串

char a[] = "1234";//可更改字符串,有占5字节,结尾为‘\0'char a[4] = "1234";//可更改字符串,有占4字节;char* a = "1234";//不可更改字符串,有占5字节,结尾为‘\0'char* a = (char *) malloc(4);//可更改字符串,有占4字节;

2.字符串函数使用.

常见容易出问题的有strcpy,strncpy,strcat,strncat;理解了如上区别后可以知道,

这些函数的第一个参数都必须使用确定内存数量的字符串来承载,这里还会

涉及一些初始化问题,如下例子:

char cmd[10];char cmdt[3] = "123";strcat(cmd,cmdt);

运行结果将会时cmd[0]将会是一个乱码,原因时初始化时cmd[0]是一个'\0',拼接时与cmdt[0]‘拼’起来了。

3.字符串转换

其他类型转字符串转换主要的主要用的一个神奇的函数:sprintf();

使用方法很简单,来个简单的例子:

char c = 'a';int i = '1';char s[4] ;sprintf(s,"%c%d",c,i);


运行的结果时s[4] = "a1";这里也不用担心s初始化长度的影响,只要够大,有多少内容就多长,这里的strlen(s)=2;


0 0