C语言中关于字符串的一些常见函数操作

常用字符串处理函数

//获取字符串的长度: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个字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值