利用指针运算实现库函数中的strcpy
#include<stdio.h>
char *mystrcpy(char *str, const char *ptr)
{
char *tmp = str;
while((*str++ = *ptr++) != '\0');// 先执行*str = *ptr 再++;
return tmp;//返回值
}
int main()
{
char str[20] = "helloworld";
char ptr[20] = "world";
mystrcpy(str, ptr);
printf("%s\n", str);
return 0;
}
利用指针运算实现库函数中的strlen
#include <stdio.h>
int mystrlen(char *str)
{
int i;
for(i = 1; *str != '\0'; i++)
{
*str++;
}
return (i - 1);
}
int main()
{
char str[20] = "Hello";
printf("%d\n", mystrlen(str));
return 0;
}
利用指针运算实现库函数中的strcmp
#include <stdio.h>
#include <stdlib.h>
int mystrcmp(const char *str, const char *ptr)
{
int i = 0;
while(*(str + i) != '\0' && *(ptr + i) != '\0')
{
if(*(str + i) > *(ptr + i))
{
return 1;
}
if(*(str + i) < *(ptr + i))
{
return -1;
}
++i;
return 0;
}
if(*str != '\0')
{
return 1;
}
if(*ptr != '\0')
{
return -1;
}
}
int main()
{
char *str = (char*)malloc(sizeof(char)*64);
char *ptr = (char*)malloc(sizeof(char)*64);
int m;
printf("Please input:");
scanf("%s%s", str, ptr);
m = mystrcmp(str, ptr);
if(m > 0)
{
printf("%s > %s", str, ptr);
}
else if(m < 0)
{
printf("%s < %s", str, ptr);
}
else
{
printf("%s = %s", str, ptr);
}
return 0;
}