strcpy
函数原型:char *strcpy(char *dest, const char *src);
功能:拷贝字符串src到目标字符串dest
实现方法:
char *strcpy(char* dest, const char* src)
{
//assert(dest!=NULL&&src!=NULL);//空值处理
char *addr = dest;
while(*dest++ = *src++);
return addr;
}
strncpy
函数原型:char *strncpy(char *dest, const char *src, size_t n);
功能:拷贝字符串src前n个字节到目标字符串dest
实现方法
char *strncpy(char *dest, const char *src, size_t n)
{
size_t i;
for (i = 0; i < n && src[i] != '\0'; i++)
dest[i] = src[i];
for ( ; i < n; i++)
dest[i] = '\0';
return dest;
}
strcat
函数原型:char *strcat(char *dest, const char *src);
功能:连接字符串,将字符串src连接在dest之后
实现方法:
char *strcat(char *dest, const char *src)
{
char* temp = dest;
while(*dest)
dest++;
while(*src)
*dest++ = *src++;
*dest = '\0';
return temp;
}
strncat
函数原型:char *strncat(char *dest, const char *src, size_t n);
功能:连接字符串,将字符串src前n个字节连接在dest之后
实现方法:
char *strncat(char *dest, const char *src, size_t n)
{
size_t dest_len = strlen(dest);
size_t i;
for (i = 0 ; i < n && src[i] != '\0' ; i++)
dest[dest_len + i] = src[i];
dest[dest_len + i] = '\0';
return dest;
}
strcmp
函数原型:int strcmp(const char *str1, const char *str2);
功能:比较两个字符串
当str1指向的字符串大于str2指向的字符串时,返回正数。
当str1指向的字符串等于str2指向的字符串时,返回0。
当str1指向的字符串小于str2指向的字符串时,返回负数。
实现方法:
int strcmp(const char *str1,const char *str2) {
assert((*str1 != '\0' && *str2 != '\0'));
while (*str1 && *str2 && *str1 == *str2) {
str1++;
str2++;
}
return *str1 - *str2;
}
strncmp
函数原型:int strncmp(const char *s1, const char *s2, size_t n);
功能:比较两个字符串前n个字符
当str1指向的字符串大于str2指向的字符串时,返回正数。
当str1指向的字符串等于str2指向的字符串时,返回0。
当str1指向的字符串小于str2指向的字符串时,返回负数。
实现方法:
int strncmp(const char *s1, const char *s2, size_t n)
{
if(!n)
return 0;
while(--n && *s1 && *s1 == *s2){
s1++;
s2++;
}
return *s1 - *s2;
}
strlen
函数原型:size_t strlen(const char *s);
功能:返回字符串s的长度,不包括 '\0'
实现方法:
size_t strlen(const char* s)
{
int len = 0;
while(*s != '\0'){
s++;
len++;
}
return len;
}
strchr
函数原型:char *strchr(const char *s, int c); //第二个参数为int型,调用时可以是char型
功能:返回字符c第一次在字符串s中出现的位置,如果无返回NULL
实现方法:
char *strchr(const char *s, int c)
{
for (; *s != (char)c; ++s)
if (*s == '\0')
return NULL;
return (char *)s;
}
strrchr
函数原型: char *strrchr(char *s, char c)
功能:返回字符c最后一次在字符串s中出现的位置,如果无返回NULL
实现方法:
char *strrchr(const char *s, int c)
{
const char *p = s + strlen(s);
do {
if (*p == (char)c)
return (char *)p;
} while (--p >= s);
return NULL;
}
strstr
函数原型:char *strstr(const char *s1, const char *s2);
功能:查找s2在s1中出现的位置,如果没有,返回NULL
实现方法:
char *strstr(const char *s1, const char *s2)
{
size_t l1, l2;
l2 = strlen(s2);
if (!l2)
return (char *)s1;
l1 = strlen(s1);
while (l1 >= l2) {
l1--;
if (!memcmp(s1, s2, l2))
return (char *)s1;
s1++;
}
return NULL;
}