超详细的解析C语言中的字符函数和字符串函数

本文详细介绍了C语言中的字符串库函数,包括strlen用于计算字符串长度,strcpy和strncpy用于复制字符串,strcat和strncat用于链接字符串,strcmp和strncmp用于字符串比较,以及strstr用于查找子字符串。这些函数在处理字符和字符串操作时非常实用。
摘要由CSDN通过智能技术生成

前言

        我们开始学习C语言时不可能避开字符,为了更好的使用字符和字符串我们就想要利用C语言里的库函数,下面让我来解析说明C语言中关于它们的库函数(strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strstr)。


strlen(计算字符串的长度)

        首先我们要想使用strlen()函数就得知道它的组成成分(如图下)。

  size_t     strlen ( const char * str );
返回类型      函数名       形参类型   

int main()
{
    char ch1[] = "abcdefg";//创建一个字符串
    char ch2[] = "abc\0defg";//创建一个字符串
    char ch3[] = {'a','b','c','d'};//创建一个字符串数组

    size_t ret1 = strlen(ch1);//用一个整形变量来接收strlen()函数的返回值
    size_t ret2 = strlen(ch2);//用一个整形变量来接收strlen()函数的返回值
    size_t ret3 = strlen(ch3);//用一个整形变量来接收strlen()函数的返回值

    printf("%d %d %d\n",ret1,ret2,ret3);//打印
    return 0;
}

        这里我们就可以得到字符串的长度了。

但是注意:strlen()函数遇到'\0'就会停下,直接返回。同理,若strlen()函数遇不到'\0'就会一直执行下去,直到遇到'\0'为止。(ret1 == 7、ret2==3、ret3为随机值)


strcpy和strncpy(复制字符串)

        strcpy()函数strncpy()函数的组成成分(如图下)

  char *     strcpy ( char * destination, const char * source );
返回类型      函数名       形参类型           形参类型
  char *     strncpy ( char * destination, const char * source, size_t num );
返回类型      函数名       形参类型           形参类型              形参类型

int main()
{
    char ch1[] = "abcdefg";//创建一个字符串
    char ch2[20] = { 0 };  //创建一个空字符数组
    char ch3[] = "abcdefg";//创建一个字符串
    char ch4[20] = { 0 };  //创建一个空字符数组

    strcpy(      ch2     ,      ch1);//将ch1的字符串复制到ch2中
           要粘贴的数组名  要复制的数组名  
    strncpy(      ch4     ,      ch3    ,      4       );//将ch3的前4的字符复制到ch3中
           要粘贴的数组名  要复制的数组名  要复制的字符个数

    printf("%s %s\n",ch2,ch4;//打印
    return 0;
}

        strncpy()函数strcpy()函数多了一个参数,它是用来限制复制字符串的字符个数。

打印结果:abcdefg abcd


strcat和strncat(链接字符串)

        strcat()函数strncat()函数的组成成分(如图下)

  char *    strcat ( char * destination, const char * source );
返回类型      函数名       形参类型           形参类型
  char *    strncat ( char * destination, const char * source, size_t num );
返回类型      函数名       形参类型           形参类型        形参类型

int main()
{
    char ch1[] = "abcd";   //创建一个字符串
    char ch2[] = "efg";  //创建一个字符串
    char ch3[] = "abcd";   //创建一个字符串
    char ch4[] = "efg";  //创建一个字符串

    strcat(      ch1     ,      ch2);//将ch1的字符串复制到ch2中
           要被链接的数组名  要链接的数组名  
    strncat(      ch3     ,      ch4    ,      2       );//将ch3的前4的字符复制到ch3中
           要链接的数组名    要链接的数组名   要链接的字符个数

    printf("%s %s\n",ch1,ch3);//打印
    return 0;
}

        strncnat()函数strcat()函数多了一个参数,它是用来限制链接字符串的字符个数。

打印结果:abcdefg abcdef


strcmp和strncmp(字符串大小的比较)

        strcmp()函数strncmp()函数的组成成分(如图下)

  int       strcmp ( const char * str1, const char * str2 );
返回类型      函数名       形参类型           形参类型
  int       strncmp ( const char * str1, const char * str2, size_t num );
返回类型      函数名       形参类型           形参类型          形参类型

int main()
{
    char ch1[] = "abcdefg";//创建一个字符串
    char ch2[] = "abcdz";  //创建一个字符串

    int ret1 = strcmp(ch1,ch2);//用一个整形变量来接收strcmp()函数的返回值
    int ret2 = strcmp(ch1,ch2,4);//用一个整形变量来接收strncmp()函数的返回值

    printf("%d %d\n",ret1,ret2);//打印
    return 0;
}

        在strcmp()函数strncmp()函数中,函数是一个一个字符比较大小的,若ch1的字符比ch2的字符大返回1,相等返回0,小返回-1。

注意:该两个函数是比较大小的,不是比较长度的。

        strncmp()函数strcmp()函数多了一个参数,它是用来限制比较字符串的字符个数。

打印结果:-1 0


strstr(寻找字符串)

        strstr()函数的组成成分(如图下)

 const char * strstr ( const char * str1, const char * str2 );
返回类型       函数名       形参类型           形参类型      
或者   char * strstr (       char * str1, const char * str2 );

int main()
{
    char ch1[] = "abcdefg";//创建一个字符串
    char ch2[] = "bcd";    //创建一个字符串
    char ch3[] = "bcz";    //创建一个字符串

    char* ret1 = strstr(ch1,ch2);
    char* ret2 = strstr(ch1,ch3);

    printf("%s %s\n",ret1,ret2);打印
    return 0;
}

        在strstr()函数 中,是在字符串ch1中寻找是否有跟字符串ch2完全相同的子字符串,若有则返回ch1中相同字符的地址,若没有,则返回空指针NULL。

打印结果:bcdefg NULL

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值