#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
char * my_strcpy(char *dest, const char *src)
{
assert( (NULL != dest) && (NULL != src) );//assert 条件为假则返回错误位置
char *ret = dest;
while( '\0' != *src )
{
*dest++ = *src++;
}
*dest = '\0';//注意赋'\0',否则执行 int len = my_strlen(dest); len = 24,即一直查找,直到找到‘\0’为止
return ret;//返回char *可起到链式循环作用,比如strlen( my_strcpy(d, s) )形式
}
//strncpy
char *my_strncpy(char * dest, const char *src, int len)
{
assert( (NULL != dest) && (NULL != src));
for(int i = 0; i < len; i++)
*(dest+i) = *(src+i);
*(dest+len) = '\0';
return dest;
}
int my_strlen(char *str)
{
int len = 0;
assert( NULL != str );
for( ;'\0' != *str; str++ )
len++;
return len;
}
void show_str(const char *dest)
{
while('\0' != *dest)
printf("%c", *dest++);
printf("\n");
}
int main( )
{
char src[] = "hello";
char *dest = (char *)malloc(sizeof(char) * my_strlen(src) + 1);
my_strcpy(dest, src);
my_strncpy(dest, src, 3);
show_str(dest);
return 0;
}