#include <stdio.h>
#include <string.h>
char * my_strcpy(char * dest, const char *src)// const 定义 *src后 *src只可读 不可写
{
if (dest == NULL || src == NULL)
return NULL;
int i = 0;
while (1)
{
*(dest + i) = *(src + i);
if(*(src + i) == '\0')
break;
i++;
}
return dest;
}
char * my_strncpy(char * dest, const char *src, int n)
{
if (dest == NULL || src == NULL)
return NULL;
int i = 0;
while (n--)
{
*(dest + i) = *(src + i);
if(*(src + i) == '\0')
break;
i++;
}
return dest;
}
int my_strlen(const char *s)
{
if (*s == 0)
return 0;
int i = 0;
while(1)
{
i++;
if(*(s + i) == '\0')
break;
}
return i;
}
char * my_strcat(char *dest, const char *src)
{
if (dest == NULL || src == NULL)
return NULL;
int i = 0;
int index = my_strlen(dest);
while (1)
{
*(dest + i + index) = *(src + i);
if(*(src + i) == '\0')
break;
i++;
}
return dest;
}
char * my_strncat(char *dest, const char *src, int n)
{
if (dest == NULL || src == NULL)
return NULL;
int i = 0;
int index = my_strlen(dest);
while (1)
{
*(dest + i + index) = *(src + i);
i++;
if (n == i)
break;
}
return dest;
}
int my_strcmp(const char *s, const char *t)
{
int i = 0;
int flag;
while(1)
{
if (*(s + i) == '\0' && *(t + i) == '\0')
{
flag = 0;
break;
}
if (*(s + i) > *(t + i))
{
flag = 1;
break;
}
if (*(s + i) < *(t + i))
{
flag = -1;
break;
}
i++;
}
return flag;
}
int my_strncmp(const char *s, const char *t, int n)
{
int i = 0;
while(1)
{
if (*(s + i) == '\0' && *(t + i) == '\0')
{
return 0;
}
if (*(s + i) > *(t + i))
{
return 1;
}
if (*(s + i) < *(t + i))
{
return -1;
}
i++;
n--;
if (n == 0)
{
if(*(s + i) != '\0')
return 1;
}
}
}
int main()
{
char str[32] = {"abcde"};
// strcpy(str, "hello");
// strncpy(str, "hello", 10);
// strncpy(str, "hello", 5);
// strncpy(str, "hello", 3);
// puts(str);
// puts(my_strcpy(str, "123456"));
printf("%d", my_strcmp(str, "abcdef"));// 两个字符串作比较 结果为 -1
printf("\n");
printf("%d", my_strncmp(str, "abcdef", 3)); // 结果为1
printf("\n");
// puts(my_strcat(str, "abc"));// 将字符串 “abc” 加到 str 末尾 结果为 abcdeabc
puts(my_strncat(str, "abcde", 3));结果为 abcdeabc
puts(my_strncpy(str, "123456", 4));// 打印 4 个字节后 继续打印到 eabc\0 结束 结果为 1234eabc
// 若是 10 打印 123456后 \0 结束打印
printf("%d \n", my_strlen(str)); // 结果为 8
}
1.拷贝函数指针应用
最新推荐文章于 2022-01-01 14:31:43 发布