自制函数实现strlen、strcpy、strcmp、strcat函数
2018-01-29 19:26
483 查看
C语言代码实现如下:
/*************************************************************************
> File Name: 1.c
> Author: Macro Red
> Mail: macrored@foxmail.com
> Environment: Lunix Ubuntu 16.04 LTS
> Created Time: 2018-01-29 16:36
************************************************************************/
/* Standard includes. */
#include <stdio.h>
/* Library includes. */
/* User files */
int MyStrlen(char a[]);
int MyStrlen2(const char* s);
char *MyStrcpy(char a[], const char b[]);
int MyStrcmp(const char a[], const char b[]);
char *MyStrcat(char a[], const char b[]);
/**
* @brief main function
* @param None
* @retval None
*/
int main(void)
{
char ch1[20] = {0}, ch2[20] = "Hello";
printf("ch1:%s\tch2:%s\n", ch1, ch2);
printf("MyStrlen(ch1):%d,MyStrlen(ch2):%d\n", MyStrlen(ch1), MyStrlen(ch2));
printf("MyStrcmp(ch1,ch2):%d\n", MyStrcmp(ch1,ch2));
printf("MyStrcat(ch1,ch2):%s\n", MyStrcat(ch1,ch2));
printf("MyStrcpy(ch1,ch2):%s\n", MyStrcpy(ch1,ch2));
printf("ch1:%s\tch2:%s\n", ch1, ch2);
return 0;
}
/**
* @brief user "strlen"
* @param char a[]
* @retval int
*/
int MyStrlen(char a[])
{
int count = 0;
while(a[count++] != '\0');
return count-1;
}
/**
* @brief user "strlen2"
* @param char a[]
* @retval int
*/
int MyStrlen2(const char* s)
{
return (*s?(strlen(s + 1) + 1) : 0);
}
/**
* @brief user "strcpy"
* @param char a[], const char b[]
* @retval None
*/
char *MyStrcpy(char a[], const char b[])
{
int i;
for(i = 0; b[i] != '\0'; i++)
{
a[i] = b[i];
}
a[i] = '\0';
return a;
}
/**
* @brief user "strcmp"
* @param const char a[], const char b[]
* @retval int
*/
int MyStrcmp(const char a[], const char b[])
{
int i;
for(i = 0; a[i] != '\0' && b[i] != '\0'; i++)
{
if(a[i] < b[i])
return -1;
else if(a[i] > b[i])
return 1;
}
if(a[i] == '\0' && b[i] == '\0')
return 0;
else if(a[i] == '\0')
return -1;
else if(b[i] == '\0')
return 1;
return 0;
}
/**
* @brief user "strcat"
* @param char a[], const char b[]
* @retval None
*/
char *MyStrcat(char a[], const char b[])
{
int a_falg, i;
a_falg = MyStrlen(a);
for(i = 0; b[i] != '\0'; i++)
{
a[i+a_falg] = b[i];
}
a[i+a_falg] = '\0';
return a;
}
/*************************************************************************
> File Name: 1.c
> Author: Macro Red
> Mail: macrored@foxmail.com
> Environment: Lunix Ubuntu 16.04 LTS
> Created Time: 2018-01-29 16:36
************************************************************************/
/* Standard includes. */
#include <stdio.h>
/* Library includes. */
/* User files */
int MyStrlen(char a[]);
int MyStrlen2(const char* s);
char *MyStrcpy(char a[], const char b[]);
int MyStrcmp(const char a[], const char b[]);
char *MyStrcat(char a[], const char b[]);
/**
* @brief main function
* @param None
* @retval None
*/
int main(void)
{
char ch1[20] = {0}, ch2[20] = "Hello";
printf("ch1:%s\tch2:%s\n", ch1, ch2);
printf("MyStrlen(ch1):%d,MyStrlen(ch2):%d\n", MyStrlen(ch1), MyStrlen(ch2));
printf("MyStrcmp(ch1,ch2):%d\n", MyStrcmp(ch1,ch2));
printf("MyStrcat(ch1,ch2):%s\n", MyStrcat(ch1,ch2));
printf("MyStrcpy(ch1,ch2):%s\n", MyStrcpy(ch1,ch2));
printf("ch1:%s\tch2:%s\n", ch1, ch2);
return 0;
}
/**
* @brief user "strlen"
* @param char a[]
* @retval int
*/
int MyStrlen(char a[])
{
int count = 0;
while(a[count++] != '\0');
return count-1;
}
/**
* @brief user "strlen2"
* @param char a[]
* @retval int
*/
int MyStrlen2(const char* s)
{
return (*s?(strlen(s + 1) + 1) : 0);
}
/**
* @brief user "strcpy"
* @param char a[], const char b[]
* @retval None
*/
char *MyStrcpy(char a[], const char b[])
{
int i;
for(i = 0; b[i] != '\0'; i++)
{
a[i] = b[i];
}
a[i] = '\0';
return a;
}
/**
* @brief user "strcmp"
* @param const char a[], const char b[]
* @retval int
*/
int MyStrcmp(const char a[], const char b[])
{
int i;
for(i = 0; a[i] != '\0' && b[i] != '\0'; i++)
{
if(a[i] < b[i])
return -1;
else if(a[i] > b[i])
return 1;
}
if(a[i] == '\0' && b[i] == '\0')
return 0;
else if(a[i] == '\0')
return -1;
else if(b[i] == '\0')
return 1;
return 0;
}
/**
* @brief user "strcat"
* @param char a[], const char b[]
* @retval None
*/
char *MyStrcat(char a[], const char b[])
{
int a_falg, i;
a_falg = MyStrlen(a);
for(i = 0; b[i] != '\0'; i++)
{
a[i+a_falg] = b[i];
}
a[i+a_falg] = '\0';
return a;
}
相关文章推荐
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 自己实现字符串操作函数strlen(),strcat(),strcpy(),strcmp()
- 自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr
- 实现strlen,strcpy,strcat,strcmp同功能的函数stringLength,stringCopy,stringCatch,stringCompare
- 字符串训练(一)模拟实现strlen,strcmp,strcpy,strcat函数
- strlen(),strcpy(),strncpy(),strcat(),strncat(),strcmp(),strncmp()等函数的实现
- strcpy,strncpy, strlen, strcmp strcat函数实现
- strlen,strcpy,strncpy,strcmp,strcat,strstr的用法,函数原型及函数的实现
- 编C语言程序:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
- 几个常用函数的实现strcpy、 strncpy、 strncat 、 strcmp、 strlen
- 编写程序实现strlen()函数,strcmp(),strcpy(),strcat()的功能
- c 重要库函数实现!strcmp strcpy strlen strstr
- strcat,strcpy,strcmp,strlen4个常用字符串处理函数的数组与指针简单实现方法~
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)
- memcpy, strcpy, strlen, strcmp, itoa, atoi 的函数实现
- 编写程序实现strlen()函数,strcmp(),strcpy(),strcat()的功能
- strcpy; strcmp; strlen; strcat 函数实现
- 字符串处理函数strlen、strcpy、strcat、strcmp和convert的C语言实现