当前位置:首页 » 《随便一记》 » 正文

【C语言】【字符串函数】【超详解】【上】!!!

17 人参与  2024年03月12日 16:46  分类 : 《随便一记》  评论

点击全文阅读


字符串函数详解(下):【C语言】【字符串函数】【超详解】【下】!!!

前言:

在学习C语言的过程中,字符串、字符数组等对新手来说总是会有疏忽,在已有的库函数中,我们平时用到最多的就是关于字符串的函数,今天我们就来详细学习字符串函数的相关内容。

下面我们就开始讲解字符串函数,讲解的主要内容为字符串函数的用法及其模拟实现

目录

1.strlen函数的使用和模拟实现

  strlen函数的应用

strlen函数的模拟实现

2.strcpy函数的使用及模拟实现

strcpy函数的使用

strcpy函数的模拟实现

3.strcat函数的使用及模拟实现

strcat函数的使用

strcat函数的模拟实现

4.strcmp函数的使用及模拟实现

strcmp函数的使用

strcmp函数的模拟实现

5.字符转换函数

函数使用


1.strlen函数的使用和模拟实现

size_t strlen ( const char * str);

1、strlen函数是用来求字符串长度的函数,它的参数必须是字符串的地址,并且是以’\0‘作为结束标志

2、strlen函数的返回类型是无符号整形,所以两个strlen(arr1)-strlen(arr2)的结果不可能为负数,这样比较字符串长度的方式是不对的

3、strlen函数所需要的头文件为<string.h>

  strlen函数的应用

#include<stdio.h>#include<string.h>int main(){    char arr1[] = "abcdef";    char arr2[] = "bbbbb";    if (strlen(arr1) - strlen(arr2) > 0)/*这就是上面提到的错误,    因为strlen返回类型为无符号整型,所以当这两个数相减为负值时实际上在内存中是一个很大的正整数*/    {        printf(">\n");    }    else    {        printf("<=\n");    }    return 0;}

strlen函数的模拟实现

方法1:

//创建临时变量int my_strlen(const char* str){    int count = 0;    assert(str);    while (*str != '\0')    {        count++;        str++;    }    return count;}

方法2:

//使用递归int my_strlen(const char* str){    assert(str);    if (*str == '\0')        return 0;    else        return 1 + my_strlen(++str);}

方法3:

//指针-指针int my_strlen(const char* str){    assert(str);    char* p = str;    while (*str != '\0')    {        str++;    }    return str - p;}

上面的几种模拟实现strlen函数的方法都涉及到assert函数,如果有不理解可以看我之前一篇:C语言——assert函数

2.strcpy函数的使用及模拟实现

char* strcpy(char * des,const char * source );

1、strcpy函数返回类型为指针

2、strcpy函数会将源字符串后第一个'\0'一并复制到目标字符串

3、目标字符串的空间必须足够大,不然容易造成溢出

strcpy函数的使用

#include<stdio.h>#include<string.h>int main(){    char arr1[] = "abcdef";    char arr2[20] = { 0 };    strcpy(arr2, arr1);    printf("%s\n", arr2);    return 0;}

strcpy函数的模拟实现

char* my_strcpy(char* arr2, const char* arr1)//函数返回类型为指针{    assert(arr1 && arr2);//确保arr1和arr2都不为空    char* p = arr2;    while (*arr2++ = *arr1++)//将arr1中的值一个一个传给arr2    {        ;    }    return p;//返回arr2的原地址}

3.strcat函数的使用及模拟实现

char* strcpy(char * des,const char * source );

strcat函数返回类型及使用要求与strcpy函数基本一致,可以看上面的

strcat函数的使用

#include<stdio.h>#include<string.h>int main(){    char arr1[20] = "I am ";//arr1空间要足够大    char arr2[] = "zhangsan";    strcat(arr1, arr2);    printf("%s\n", arr1);    return 0;}

strcat函数的模拟实现

char* my_strcat(char* arr1, const char* arr2){    assert(arr1 && arr2);    char* p = arr1;    while (*arr1 != '\0')    {        arr1++;    }    while (*arr2 != '\0')    {        *arr1 = *arr2;        arr1++;        arr2++;    }    return p;//返回arr1的原地址}

4.strcmp函数的使用及模拟实现

int strcmp(const char * arr1,const char * arr2 );

strcmp函数返回类型是整形,大于返回整数,小于返回负数,等于返回0

strcmp函数的使用

#include<stdio.h>#include<string.h>int main(){    char arr1 = "abcdef";    char arr2 = "bbbbb";    int ret = strcmp(arr1, arr2);    if (ret > 0)    {        printf(">\n");    }    else if (ret < 0)    {        printf("<\n");    }    else    {        printf("=\n");    }    return 0;}

strcmp函数的模拟实现

int my_strcmp(const char* arr1, const char* arr2){    asssrt(arr1 && arr2);    while (*arr1 == *arr2)    {        if (*arr1 == '\0')            return 0;        arr1++;        arr2++;    }    return *arr2 - *arr1;}

5.字符转换函数

C语言提供两种字符转换函数:

char towlower(char c);//将传进去的大写字母转换成小写字母char towupper(char c);//将传进去的小写字母转换成大写字母

函数使用

#include<stdio.h>#include<string.h>int main(){    printf("%c\n", towlower('A'));    printf("%c\n", towupper('a'));    return 0;}

上面几个函数就是C语言中用的最多的几个字符串函数,在下一篇我们将继续探索C语言中更多的字符串函数,欲知后事,还请点赞加关注,在接下来的一篇,我们将一同探索strstr、strtok、strerror等更多字符串函数。

创作不易,还请一键三连!!!


点击全文阅读


本文链接:http://zhangshiyu.com/post/78390.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1