参考K&R
s,t 为char*,ct,cs为const char* ,c为int
char *strcpy (s,ct) ct复制到s,含\0 char *strncpy(s,ct,n)
char *strcat (s,ct) ct接入到s尾部 char *strncat (s,ct,n)
size_t strlen(cs) cs的长度
int strcmp (cs,ct)cs>=ct 返回0,否则返回负数 int strncmp(cs,ct,n)
char *strchr(cs,c) 字符c在cs中第一次出现的位置,不含则返回nullchar *strrchr(cs,c)字符c在cs中最后一次出现的位置,不含则返回null
char *strstr(cs,ct) 字符串ct在cs中第一次出现
其他:strspn, strcspn, strpbrk, strerror, strtok
mem函数
void *memcpy(s,ct,n) ct中n个字符复制到s中,返回s
void * memmove(s,ct,n) 相比memcpy,该函数对象重叠时也可执行
int memcmp(cs,ct,n)cs前n个字符与ct比较
void *memchr(cs,c,n) c第一次在cs中出现位置,否则null
void * memset(s,c,n) s中前n个字符替换为c,返回s
strcpy实现
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != '\0') // 2分
NULL ;
return address ; // 2分
}
strlen实现
int mystrlen(const char *str) {
assert(str != NULL);
int len = 0;
while( *str++ !='\0')
len++;
return len;
}
strcat实现
char *mystrcat(char *strDest, const char *strScr)
{
assert((strDest != NULL) && (strScr != NULL));
char *address = strDest;
while ( *strDest )
strDest++;
while(*strDest++ = *strScr++)
NULL;
return address;
}
strcmp实现
int mystrcmp (const char *str1,const char *str2)
{
assert( (str1 !=NULL) && (str2 != NULL) );
int len = 0;
while ( *str1 && *str2 && (*str1 == *str2) )
{
str1++;
str2++;
}
return *str1 - *str2;
}