库函数——字符串

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Z_J_T/article/details/78859114

strcat:字符串连接函数

函数原型:char *strcat (char *dest,char *src);

头文件:# include< string.h>

函数功能:将两个字符串连接合并成一个字符串,也就是把字符串src连接到字符串dest后面,连接后的结果放在字符串dest中

返回值:指向字符串dest的指针

char *My_Strcat(char *dest, char *src)//字符串连接函数
{
    assert(dest != NULL&&src != NULL);
    while (*dest!= '\0')
    {
        dest++;
    }
    while (*src++ != '\0')
    {
        *dest++= *src;
    }
    *(++dest)= '\0';
    return dest;
}
int main()
{
    char dest[100] = { "hello w" };
    char *src = "orld!" ;
    My_Strcat(dest,src);
    printf("%s", dest);
    return 0;
}

strchr:字符串中字符首次匹配函数

函数原型:char *strchr(char *str, char c);

头文件:#include< string.h>

函数功能:在字符串中查找给定字符的第一次匹配,也就是在字符串str中查找字符c第一次出现的位置

返回值:第一次匹配位置的指针

const char *My_Strchr(const char *str, char c)//字符串中字符首次匹配函数
{
    assert(str != NULL);
    while (*str != '\0')
    {
        if (*str == c)
        {
            return str;
        }
        str++;
    }
    return NULL;
}

int main()
{
    char dest[100] = { "hello w" };
    char *src = "orld!" ;
    printf("%c\n",My_Strchr(dest, 'e'));
    return 0;
}

strnchr

const char *My_Strnchr(const char *str, char c, int n)//查找给定字符,第n次出现的位置
{
    assert(str != NULL);
    while (*str != '\0')
    {
        if (*str == c)
        {
            n--;
        }
        if (n == 0)
        {
            return str;
        }
        str++;
    }
    return NULL;
}

int main()
{
    char dest[100] = { "roglo C Program!" };
    char *src = "hel" ;
    printf("%s\n",My_Strnchr(dest, 'o', 3));
    return 0;
}

strcmp:字符串比较函数

函数原型:int strcmp (char str1,char str2);

头文件:#include< string.h>

函数功能:比较两个字符串的大小,也就是把字符串str1和字符串str2从首字符开始逐字符的进行比较,直到某个字符不相同或比较到最后一个字符为止,字符的比较为ASIC码的比较

返回值:若字符串str1大于字符串str2返回结果大于零,若字符串str1小于字符串str2返回结果小于零,若字符串str1等于字符串str2返回结果等于零

int My_Strcmp(const char *str1,const char * str2)//字符串比较函数
{
    assert(str1 != NULL&&str2 != NULL);
    int n = 0;
    while (*str1 != '\0'&&*str2 != '\0')
    {
        if (*str1 != *str2)
        {
            n = *str1 - *str2;
            return n;
        }
        str1++;
        str2++;
    }
    n = *str1 - *str2;
    return n;
}

int main()
{
    char dest[100] = { "hello w" };
    char *src = "hello world!" ;
    printf("%d",My_Strcmp(dest, src));
    return 0;
}

strcpy:字符串拷贝函数

函数原型: char * strcpy (char dest,char src);

头文件:#include< string.h>

函数功能:实现字符串的拷贝工作,也就是把字符串src中的内容拷贝到字符串dest中,使两个字符串的内容相同。

返回值:指向字符串dest的指针

char *My_Strcpy(char *dest, char * src)//字符串拷贝函数
{
    assert(dest != NULL&&src != NULL);
    int i = 0;
    while (src[i]!='\0')
    {
        dest[i] = src[i];
        i++;
    }
    return dest;
}

int main()
{
    char dest[100] = { "" };
    char *src = "hello world!" ;
    printf("%s",My_Strcpy(dest, src));
    return 0;
}

strlen:计算字符串长度函数

函数原型: int strlen (char *str);

头文件:#include< string.h>

函数功能:求字符串的长度,也就是求字符串str中有多少个字符

返回值:字符串str字符的个数

int My_Strlen(const char *str)//计算字符串长度函数
{
    assert(str != NULL);
    int count = 0;
    while (str[count] != '\0')
    {
        count++;
    }
    return count;
}

int main()
{
    char dest[100] = { "" };
    char *src = "hello world!" ;
    printf("%d\n", My_Strlen(src));
    return 0;
}

strncat:字符串连接函数

函数原型:char *strncat (char *dest, char *src, int n);

头文件:#include< string.h>

函数功能:将一个字符串的子串连接到另一个字符串末端,也就是把字符串src
的前n个字符连接到字符串dest后面,连接后的结果放在字符串dest中

返回值:指向字符串dest的指针

char *My_Strncat(char *dest, const char *src, int n)//把src字符串中n个字符连接到dest后
{
    assert(dest != NULL&&src != NULL);
    assert(n >= 0);
    while (*dest != '\0')
    {
        dest++;
    }
    while (*src != '\0'&&n>=0)
    {
        *dest++ = *src++;
        n--;
    }
    *(++dest) = '\0';
    return dest;
}

int main()
{
    char dest[100] = { "" };
    char *src = "hello world!" ;
    My_Strncat(dest, src, 12);
    printf("%s", dest);
    return 0;
}

strncpy:字符串子串拷贝函数

函数原型: char * strncpy (char dest,cosnt char src, int n);

头文件:#include< string.h>

函数功能:实现字符串子串的拷贝工作,也就是把字符串src中的前n个字符拷贝到字符串dest中。

返回值:指向字符串dest的指针

char *My_Strncpy(char *dest, cosnt char * src, int n)//字符串子串拷贝函数
{
    assert(dest != NULL&&src != NULL);
    assert(n >= 0);
    while (*src != '\0'&&n > 0)
    {
        *dest++ = *src++;
        n--;
    }
    return dest;
}

int main()
{
    char dest[100] = { "roglo C Program!" };
    char *src = "hel" ;
    My_Strncpy(dest, src, 3);
    printf("%s", dest);
    return 0;
}

strncmp:字符串子串比较函数

函数原型: int strncmp (char str1,char str2, int n);

头文件:#include< string.h>

函数功能:比较两个字符串子串的大小,也就是把字符串str1的前n个字符组成的子串和字符串str2的前n个字符组成的子串进行比较,从首字符开始逐字符的进行比较,直到某个字符不相同或比较到第n个字符为止。

返回值:若字符串str1前n个字符组成的子串大于字符串str2前n个字符组成的子串返回结果大于零,若字符串str1前n个字符组成的子串小于字符串str2前n个字符组成的子串返回结果小于零,若字符串str1前n个字符组成的子串等于字符串str2前n个字符组成的子串返回结果等于零

int My_Strncmp(char *str1, char * str2, int n)//字符串子串比较函数
{
    assert(str1 != NULL&&str2 != NULL);
    int s = 0;
    while (*str1 != '\0'&&*str2 != '\0'&&n > 0)
    {
        if (*str1 != *str2)
        {
            s = *str1 - *str2;
            return s;
        }
        str1++;
        str2++;
        n--;
    }
    s = *str1 - *str2;
    return s;
}

int main()
{
    char dest[100] = { "hello C Program!" };
    char *src = "hello world!" ;
    printf("%d\n", My_Strncmp(dest, src, 5));
    printf("%d\n", My_Strncmp(dest, src, 10));
    return 0;
}

strrchr:字符串中字符末次匹配函数

函数原型:char *strrchr(char *str, char c);

头文件:#include< string.h>

函数功能:在字符串中查找给定字符的最后一次匹配,也就是在字符串str中查找字符c最后一次出现的位置

返回值:最后一次匹配位置的指针

char *My_Strrchr(char *str, char c)//字符串中字符末次匹配函数
{
    assert(str != NULL);
    int i = 0;
    while (str[i] != '\0')
    {
        i++;
    }
    while(i >= 0)
    {
        if (str[i] == c)
        {
            return str + i;
        }
        i--;
    }
    return NULL;
}

int main()
{
    char dest[100] = { "hello C Program!" };
    char *src = "hello world!" ;
    printf("%s\n",My_Strrchr(dest, 'o'));
    return 0;
}

strstr:字符串匹配函数

函数原型:char *strstr(char *str1, char *str2);

头文件:#include< string.h>

函数功能:在字符串中查找另一个字符串首次出现的位置,也就是在字符串str1中查找第一次出现字符串str2的位置。

返回值:返回第一次匹配字符串的指针

char *My_Strstr(char *str1, char *str2)//字符串匹配函数
{
    assert(str1 != NULL&&str2 != NULL);
    int i = 0;
    int j = 0;
    while (str1[i] != '\0')
    {
        while(str1[i] == str2[j])
        {
            if (str2[j + 1] == '\0')
            {
                return str1 + i - j;
            }
            i++;
            j++;
        }
        j = 0;
        i++;
    }
    return NULL;
}

int main()
{
    char dest[100] = { "hello C Program!" };
    char *src = "rog" ;
    printf("%s", My_Strstr(dest, src));
    return 0;
}

Count_Char

int Count_Char(const char *str, const char *chars)//str中有多少个字符与chars匹配
{
    assert(str != NULL && chars != NULL);
    int count = 0;
    int i = 0;
    while (str[i] != '\0')
    {
        int j = 0;
        while (chars[j] != '\0')
        {
            if (chars[j] == str[i])
            {
                count++;
            }
            j++;
        }
        i++;
    }
    return count;
}

int main()
{
    char dest[100] = { "roglo C Program!" };
    char *src = "hello" ;
    printf("%d\n",Count_Char(dest, src));
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Z_J_T/article/details/78859114