C语言之库函数(strlen,strcpy,strcmp)模拟实现
Posted 王嘻嘻-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言之库函数(strlen,strcpy,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 详解与手动实现