常用字符串处理函数
//获取字符串的长度:strlen
//要用函数strong. h对字符串的一系列进行操作
#include<stdio.h>
#include<string.h>
int main()
{
char str[ ]="I love fishc .com!";
printf("%d",sizeof(str));
printf("%d",strlen(str));
}
结果:18 和17 strlen长度无包括’\0’
//拷贝字符串函数:strcpy
#include<stdio.h>
#include<string.h>
int main()
{
char str1[ ] ="Criminal string";
char str2[ ] ="New String";
char str3[100];
strcpy(str1,str2);/*把str2中的值拷贝到str1中*/
strcpy(str3,"copy successful");/*与上一条代码同理*/
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
printf("str3:%s\n",str3);
return 0;
}
结果str1 New string str2 New string str3 copy successful
重要提醒,目标字符串数组要足以容纳后者
//拷贝字符串函数:strncpy
先做两者对比 和 strcpy函数和strncpy函数
**strcpy函数缺点上就是如果目标字符串数组容量比被copy者要小则会出现数据溢出的情况
在这一点上strncpy函数做了改变 不过要注意 在使用时要限定copy个字符 同时’\0’ 不会被自然复制过去 因此要在下一步注意添加’\0’ 不然会一直读下去 出现错误**
#include <stdio.h>
#include<string.h>
int main ()
{
char str1[ ] ="To be or not to be ";
char str2[40];
strncpy(str2,str1,5);/*表示复制5个字符 但不包括'\0'*/
str2[5] = '\0';
printf("str2:%s\n",str2);
return 0;
}
结果 To be
//连接字符串函数:strcat
#include<stdio.h>
#include<string.h>
int main ()
{
char str1[ ] ="I love";
char str2[ ] ="FIshC.com";
strcat (str1," ");
strcat (str1,str2);
printf("str1:%s\n",str1);
return 0;
}
运行结果
I love FIshc. com
//连接字符串函数:strncat
strncat函数也是添加一个参数限定 不过和strncpy 不同的是 strncat 总是在后面会自动追加一个’\0’
#include<stdio.h>
#include<string.h>
int main()
{
char str1[ ] ="I love";
char str2[ ] ="fishc com";
strncat(str1,str2,5);
printf("%s",str1);
return 0;
}
运行结果
l love fishc
//比较字符串:strcmp
如果两个字符串完全一致,那么返回值为0
如果存在差异 则返回值正负不确定 根据情况返回
原理是从第一个字符串开始依次对比每一个字符串字符的ascii码,如果第一个字符串字符的ascii码小于第二个字符串对应字符的ascii码 那就返回一个<0的值 反之返回一个>0的值
#include<stdio.h>
#include<string.h>
int main()
{
char str1[ ] ="fishc.com";
char str2[ ] ="fishc.com";
if (!strcmp(str1,str2))
{
printf("两个字符串完全一致\n");
}
else
{
printf("两个字符串存在差异");
}
return 0;
}
另外strncmp函数是只对比n个字符