模拟实现不受限制的字符串函数--C语言版

简介: 模拟实现不受限制的字符串函数--C语言版

C语言中提供了许多十分好用的库函数,一旦我们掌握了它们,我们使用C语言写代码就会变得更加得心应手。

1.strlen
strlen函数就是计算字符串的长度的,它会一直读取到\0,它的返回值就是在字符串中'\0' 前面出现的字符个数(不包括\0)。 而了解strlen的实现原理也会让我们更好的理解代码

//模拟实现strlen
// 计算器版本
//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char *str)
//{
// assert(str);
// int count = 0;
// while (*str++ != 0)
// {
// count++;
// }
// return count;
//}
//
//int main()
//{
// char arr[] = {"abcdef"};
// int ret = my_strlen(arr);
// printf("%d", ret);
// return 0;
//}

复制代码
当然,strlen绝对不止这一种写法,如果各位想看,可以移步strlen的三种模拟实现方法

2.stccpy
strcpy是将字符串b复制到字符串a上,其中源字符串必须要以\0结束,并且目标字符串必须要有足够大的空间

include<stdio.h>

include<string.h>

void mine_strcpy(char dest, char sou)
{

while (*dest++ = *sou++)//当sou将\0传给dest时,while里面的值是0,自动结束了循环---既copy了\0
                          //又使循环停止
{
    ;
}

}
int main()
{

char arr1[] = "aaaaaaaaaaaaaa";
char arr2[] = "hello";
mine_strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;

}
复制代码
3.strcat
strcat是字符串追加函数,目标字符串必须要有足够大的空间去容纳原字符串,并且原字符串必须要以\0结尾 strcat的模拟实现:首先需要找到目标字符串的\0位置,接着要在\0的位置,将要复制的字符串拷贝过去即可。

include<stdio.h>

include<string.h>

include<assert.h>

char my_strcat(char dest, const char* src)
{

assert(dest && src);
char* ret = dest;

//1.找到目标字符串的\0

while (*dest)
{
    dest++;
}

//2.接着追加过去(包括\0)(就是strcpy的思路)

while (*dest++ = *src++)
{
    ;
}
return ret;

}
int main()
{

char arr1[50] = {"stay foolish,"};
char arr2[20] = {"stay hungry"};
//my_strcat(arr1, arr2);
printf("%s", my_strcat(arr1, arr2));//链式访问
return 0;

}
复制代码
4.strcmp
strcmp就是比较两个字符串的大小 strcmp的实现思路就是一个一个字符的进行比较,知道找到不一样的或者全部一样的为止

//模拟实现strcmp

include<stdio.h>

include<assert.h>

int my_strcmp(const char p,const char q)
{

assert(p && q);
while (*p == *q)
{
    if (*p == '\0')//*q也为'\0'
    {
        return 0;
    }
    p++;
    q++;
}

//if (p > q)

//    return 1;
//else
    //return -1;
return  *p - *q;

}
int main()
{

char p[] = "abcd";
char q[] = "abe";
int ret = my_strcmp(p, q);
if (ret > 0)
    printf("p>q\n");
else if (ret < 0)
    printf("p<q\n");
else
    printf("p==q\n");
return 0;

}
复制代码
以上介绍的都是长度不受限制等函数

目录
相关文章
|
2月前
|
C语言 C++
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
|
2月前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
41 0
|
2月前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
2月前
|
C语言
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
2月前
|
C语言
【C语言】模拟实现深入了解:字符串函数
【C语言】模拟实现深入了解:字符串函数
|
4月前
|
安全 程序员 C语言
【C语言】字符串函数及其模拟实现
【C语言】字符串函数及其模拟实现
|
4月前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
69 0
|
4月前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
61 0
|
5月前
|
存储 缓存 C语言
【C语言】字符函数,字符串函数,内存函数
C语言中的字符串函数和内存函数
80 0
【C语言】字符函数,字符串函数,内存函数
|
6月前
|
C语言
【c语言】字符串函数的模拟实现(二)
【c语言】字符串函数的模拟实现(二)
31 1