• 详细讲解库函数的使用及模拟实现(提升对库函数的理解和运用)



    前言

    学好库函数的使用,才能让我们从写出更优秀的代码。
    今天要介绍的是strlen,strcpy,strcat,strcmp,strstr,atoi


    1.strlen

    先来看看标准库中是如何定义的
    在这里插入图片描述
    从标准库中可以看出strlen返回值是size_t,参数是const cahr* string,引用的头文件是。现在就知道strlen是如何使用的了。

    //strlen的使用
    #include
    #include
    int main()
    {
       
    	char arr[10] = "abcdef";
    	int ret = strlen(arr);
    	printf("%d\n", ret);
    	return 0;

    strlen计算的是\0之前出现几个字符。
    现在我们来模拟实现。

    //模拟实现strlen
    #include
    #include
    int my_strlen(const char* str)
    {
       
    	assert(str);
    	int count = 0;
    	while (*str != '\0')
    	{
       
    		str++;
    		count++;
    	}
    	return count;
    }
    int main()
    {
       
    	char arr[] = "abcdef";
    	int ret = my_strlen(arr);
    	printf("%d\n", ret);
    	return 0;
    }
    '
    运行

    2.strcpy

    同样,我们先来看看标准库是如何定义的。
    在这里插入图片描述
    函数引用的头文件是,函数返回值是char目标空间的起始地址,参数是char的目标字符串和char*的源字符串。如何使用它?

    //strcpy的使用
    #include
    #include
    int main()
    {
       
    	char arr1[10] = "abcdef";
    	char arr2[10] = "xxxxxxxxx";
    	strcpy(arr2, arr1);
    	printf("%s", arr2);
    	return 0;
    }
    '
    运行

    strcpy是字符串拷贝,'\0’也会被拷贝,参数返回目标空间的起始地址是为了实现链式访问。接下来我们来模拟实现它。

    //模拟实现strcpy
    #include
    #include
    void my_strcpy(char* str1, const char* str2)
    {
       
    	assert(str1 && str2);
    	while (*str2 != '\0')
    	{
       
    		*str1 = *str2;
    		str1++;
    		str2++;
    	}
    }
    int main()
    {
       
    	char arr1[10] = '
    运行
  • 相关阅读:
    各类开源协议
    深度解读李彦宏的“不要卷模型,要卷应用”
    Day08--自定义组件的properties属性
    【LeetCode热题100】--189.轮转数组
    RFID系统简介:优点、应用与发展前景
    thinkphp6 只有默认页能访问 其他404 其他模块404
    Spring(一)- 初始 + DI+scope
    双目立体视觉
    一文-学会es6的class类
    muduo源码剖析之EventLoopThreadPool
  • 原文地址:https://blog.csdn.net/TRick_Love/article/details/127067271