1 //求字符串长度 2 int strlen(const char *s) { 3 int n = 0; 4 while (*s++ != '\0') 5 n++; 6 return n; 7 } 8 9 //字符串拷贝,返回指针是为了实现链式操作,如strlen(strcpy(dst, src)),dst需要保证有足够空间 10 char *strcpy(char *dst, const char *src) { 11 assert(dst != NULL && src != NULL); //拷贝空串无意义 12 if(dst == src) 13 return dst; 14 char *ret = dst; 15 while ((*dst++ = *src++) != '\0') 16 ; 17 return ret; 18 } 19 20 //字符串比较,p>q则返回整数,p=q返回0,否则返回负数 21 int strcmp(const char *p, const char *q) { 22 while (*p && *p == *q) 23 p++, q++; 24 return (int) ((unsigned char) *p - (unsigned char) *q); 25 } 26 27 // 找到字符c在字符串s中首次出现的位置 28 char *strchr(const char *s, char c) { 29 for (; *s; s++) 30 if (*s == c) 31 return (char *) s; 32 return NULL; 33 } 34 35 //拼接字符串,注意这里dst需要保证有足够的空间 36 char *strcat(char *dst, const char *src) { 37 char *d = dst; 38 while (*d) 39 d++; 40 while ((*d = *src) != '\0') 41 ; 42 return dst; 43 } 44