C语言标准库函数strcpy与strcmp的简单实现
1 //C语言标准库函数strcpy的一种简单实现。 2 3 //返回值:目标串的地址。 4 5 //对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。 6 7 //参数:des为目标字符串,source为原字符串。 8 9 char* strcpy(char* des,const char* source) 10 { 11 char* r=des; 12 13 assert((des != NULL) && (source != NULL)); 14 15 while((*des++ = *source++)!='\0'); 16 17 return r; 18 } 19 20 //while((*des++=*source++));的解释:赋值表达式返回左操作数,所以在赋值NULL后,循环停止。
1 //C语言标准库函数strcmp的一种简单实现 2 3 //返回值当s1<s2时,返回为负数;当s1=s2时,返回值= 0;当s1>s2时,返回正数 4 5 //参数:字符串str1,str2 6 7 int strcmp(const char *str1,const char *str2) 8 { 9 /*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++, 10 return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/ 11 while(*str1 == *str2) 12 { 13 if(*str1 == '\0') 14 return 0; 15 16 str1++; 17 str2++; 18 } 19 return *str1 - *str2; 20 }