字符串n比较strncmp()
int mystrncmp(const char *p1, const char *p2, int n)
{
assert((p1 != NULL) && (p2 != NULL));
while (((*p1)==(*p2))&&(p1!='\0')&&(n>0))
{
p1++;
p2++;
n--;
}
if (n==0)
return 0;
else
return *p1 - *p2;
}
字符串n拷贝strncpy()
char *mystrncpy(char *dest, const char *src, size_t count)
{
assert((p1 != NULL) && (p2 != NULL));
char *tmp = dest;
while(count)
{
if((*tmp=*src)!='\0')
{
src++;
tmp++;
}
count--;
}
if(*tmp!='\0')
*tmp='\0'; //put '\0' at the end
return dest;
}
字符串拷贝strcpy()
char *mystrcpy(char *strDest, const char *strSrc)
{
int len = 0;
if (strSrc == NULL) // cannot copy a NULL string
{
strDest[0] = '\0';
}
else
{
len = strlen(strSrc);
for (int i=0; i<(len+1); i++)
{
strDest[i] = strSrc[i];
}
}
return strDest;
}
int main(int argc, char** argv)
{
char *ppp = "afda";
char str[10];
char *p = NULL;
mystrcpy(str, "12345"); // common use
mystrcpy(str, "1234567890");// overflow of the str array
mystrcpy(str, ""); // empty string
//mystrcpy(str, NULL); // can compile but fail to run
mystrcpy(str, p);
mystrcpy(str, (char *)NULL);
mystrcpy(str, 0);
mystrcpy(str, '\0');
return 0;
}