C言雅韵集:字符串函数

发布于:2024-12-18 ⋅ 阅读:(9) ⋅ 点赞:(0)

目录

 

前言

一.strcpy

二.strlen

三.strcmp

四.strcat


 

前言

以下函数都是库函数,要使用下列函数时要引用头文件<string.h>

求字符串长度

strlen

长度不受限制的字符串函数

strcpy,strcat,strcmp

长度受限制的字符串函数

strncpy,strncat,strncmp

字符串查找

strstr strtok

错误信息报告

strerror

字符操作

一.strcpy

这个函数将一个字符串中的内容拷贝到另一个字符串,要求被拷贝字符串的字符串长度要小于目标字符串,不然就会拷贝失败,编辑器会报错。

char* strcpy (char* destination,char* source)

下面是实现my_strcpy

a55b1bdf447748d6b4a23cc6034080eb.png

二.strlen

该函数会计数\0之前的元素数目。且返回类型是size_t是无符号整形,该点需要特别注意。

3fd31d748a5f4779a7cd17b55b9d1abf.png

三.strcmp

用于比较两个字符串.函数原型是

int strcmp(const char* str1,const char*str2);

返回值:如果str1 < str2返回0;否则返回一个大于0 的数(返回str1的ASCII码值相减)

这个函数看起来这么简单,我们就不进行实测了,让我们来实现一下mystrcmp吧!

int my_strcmp(const char* str1,const char*str2)
{
    while(*str1 && *str2 && *str1==*str2)
    {
        s1++;
        s2++;
    }
    return *s1 - *s2;
}

这里一定要注意while里面的*str1和*str2一定不要忘记(我也忘了好多次),不然如果两个前面一样,但多了几个元素,这个函数会出问题的

四.strcat

是C语言中的字符串拼接函数,函数原型

char* strcat(char *destination, const char* source);

功能

将source的字符串的内容连接到destination字符串的末尾.destination字符串必须要留有足够大的空间否则可能会导致缓冲区溢出的问题

实现原理

strcat会找到destination中的字符串末尾(\0),将从'\0'开始覆盖source的内容直到遇到source的'\0',

让我们来看看案例

#include<string.h>
#include<stdio.h>
int main()
{
    char str1[30] = "hello ";
    char str2[] = "world";
    strcat(str1,str2);
    
    printf(str1);
    return 0;
}

结果是

"hello world"

该函数有返回值,返回的是目标字符串的首地址

老规矩让我们来实现一下my_strcat

char* strcat(char *destination, const char* source)
{
    char* tmp = destination;

    while( *destination!='\0')
    {
        destination++;
    }
    while( *source!='\0')
    {
        *destination++ = *source++; 
    }
    return tmp;
}

长度受限制的字符串函数

strncpy,strncat,strncmp

就连在一起讲吧