代码部分:
#include <stdio.h>
#include <string.h>
#include <assert.h>
char* mystrcpy(char *str,char *p)
{
//assert 的作用是现计算表达式 expression,如果其值为假(即为0)
//那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行
assert(str != 0 && p != 0);//断言
//if(str == NULL || p == NULL) //如果str或p里头是空的
//return NULL; //就返回一个空的
char *bak = str ;
while(*p != '\0'){ //*p 取值,不等于\0,就运行
/* *str = *p;
str++;
p++; */
*str++ = *p++; //先赋值,再偏移,和上面三行同等
}
/* while((*str++ = *p++) != '\0') */ //与上同等
*str = '\0'; //字符串后加上 \0
return bak;
}
char* mystrncpy(char *str,char *p,int count)
{
if(str == NULL || p == NULL)
return NULL;
char *bak = str ;
while(*p != '\0' && count>0){
*str++ = *p++;
count--;
}
if(count>0){
while(count>0){
*str++ = '\0';
count--;
}
return str;
}
*str = '\0';
return bak;
}
int main()
{
char str[128] = {'\0'};
char *p = "zhangmoulaobi";
mystrcpy(str,p);
puts(str);
mystrncpy(str,p,8);
puts(str);
return 0;
}