C语言之库函数(strlen,strcpy,strcmp)模拟实现

Posted 王嘻嘻-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言之库函数(strlen,strcpy,strcmp)模拟实现相关的知识,希望对你有一定的参考价值。

目录

1.模拟实现strlen

2.strcpy的模拟实现

3.模拟实现strcmp


1.模拟实现strlen

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

模拟实现strlen:函数计算的是不算结束标志符’\\0’在内的字符串的长度。
//1.采用计数器的方法
// int my_strlen(const char* str)
//
//    assert(str != NULL); //断言,定义的指针不能为空
//    int count = 0;     //计数器
//    while (*str != '\\0')
//    
//        count++;
//        str++;
//    
//    return count;
//

//2.采用递归法实现模拟函数strlen
int my_strlen(const char* str)

    assert(str != NULL);
    if (*str == '\\0')
    
        return 0;
    
    else
    
        return 1 + my_strlen(str + 1);
    


int main()

    char arr[] = "abcdef";    //应将字符串放入一个字符型数组中
    int ret = 0;
    ret = my_strlen(arr);
    printf("字符串长度为:%d\\n", ret);  //6
    system("pause");
    return 0;

2.strcpy的模拟实现

循环遍历目标字符串,循环截至到\\0结束

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

//字符串函数strcpy的模拟实现,必须将原字符串的’\\0’也要赋给目标字符串
//1.
// char* my_strcpy(char* str, char* pos)
//
//	while (*str != '\\0')
//	
//		*pos = *str;
//		pos++;
//		str++;
//	
//	*pos = *str;
//	return pos;
//
//2.
void Mystrcpy(char str[], char pos[],int length)

	for (int i = 0; i <= length; i++)
	
		pos[i] = str[i];
	


int main()

	char str[] =  "hello,world!" ;
	char pos[100];
	int length = strlen(str);
	Mystrcpy(str, pos, length);
	printf("%s\\n", pos);
	//char str[] =  "hello,world!" ;
	//char pos[] =  0 ;
	//my_strcpy(str, pos);
	//printf("%s\\n", pos);
	system("pause");
	return 0;

3.模拟实现strcmp

strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:
int strcmp(const char* str1, const char* str2);
其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
① str1小于str2,返回负值或者-1(VC返回-1); by wgenek 转载请注明出处
② str1等于str2,返回0;
③ str1大于str2,返回正值或者1(VC返回1)。

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

int my_strcmp(const char* str1, const char* str2)

	assert(str1);
	assert(str2);
	while (*str1 && str2 && (*str1 == *str2))
	
		str1++;
		str2++;
	
	if (*str1 > *str2) 
	
		return 1;
	
	else if (*str1 < *str2)
	
		return -1;
	
	else if (*str1 == *str2)
	
		return 0;
	


int main()

	char str1[] = "abcdefgh";
	char str2[] = "1234abcd";
	int x = my_strcmp(str1, str2);
	if (x > 0)
	
		printf("str1大\\n");
	
	else if (x < 0) 
		printf("str2大\\n");
	
	else if (x == 0) 
		printf("一样大\\n");
	
	system("pause");
	return 0;

本小节完^_^

以上是关于C语言之库函数(strlen,strcpy,strcmp)模拟实现的主要内容,如果未能解决你的问题,请参考以下文章

C语言学习字符串操作函数——————>strlen strcpy strcmp 详解与手动实现

C语言学习字符串操作函数——————>strlen strcpy strcmp 详解与手动实现

用C语言程序,通过自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和的功能

c语言中strcpy跟mencpy哪个效率更高?

C语言----string函数和memory函数

c语言strcpy()用法