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 }