strcat()函数
char *strcat(char *dest, const char *src)
把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。它返回一个指向字符串dest首地址的指针。
下面的函数,实现strcat函数。
char* my_strcat(char* str1, const char* str2)
{
char *ret = str1;
while(*str1 != '\0')
{
str1++;
}
while(*str1++ = *str2++)
{
;
}
*str1 = '\0';
return ret;
}
char dest[50]="Who are you?", src[50]="I am Jack";
strcat(dest, src);
printf("%s\n", dest);
//Who are you?I am Jack
strchr()函数
char *strchr(const char *str, int c)
在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。该函数返回在字符串 str 中第一次出现字符 c 的位置,如果未找到该字符则返回 NULL。它的声明如下:
char* my_strchr(const char* str, int c) {
for (; *str != '\0'; ++str) {
if (*str == c) {
return str;
}
}
return NULL;
}
char str[50]="I am Jack";
char ch = 'a';
char *addr = strchr(str, ch);
printf("找到:%c\n",*addr);
strcmp()函数
int strcmp(const char *str1, const char *str2)
把 str1 所指向的字符串和 str2 所指向的字符串进行比较。如果str1>str2则返回值>0,如果str1<str2则返回值>0,如果str1=str2则返回值=0。它的声明如下:
其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
① str1小于str2,返回负值或者-1(VC返回-1);
② str1等于str2,返回0;
③ str1大于str2,返回正值或者1(VC返回1);
int my_strcmp(const char* str1, const char* str2)
{
while ((*str1) && (*str1 == *str2))
{
str1++;
str2++;
}
if (*(unsigned char*)str1 > *(unsigned char*)str2)
{
return 1;
}
else if (*(unsigned char*)str1 < *(unsigned char*)str2)
{
return -1;
}
else
{
return 0;
}
}
*(unsigned char*)str1
是指 str1这个地址对应的内容。
char str1[15]="abcde";
char str2[15]="ABCDE";
int ret;
ret = strcmp(str1, str2);
if (ret < 0)
{
printf("str1 小于 str2");
}
else if (ret > 0)
{
printf("str2 小于 str1");
}
else
{
printf("str1 等于 str2");
}
strcpy()函数
char *strcpy(char *dest, const char *src)
把 src 所指向的字符串复制到 dest。其返回指向dest的指针。
char * my_strcpy(char * dst,const char * src){
if((NULL == dst)||(NULL == src)){
return NULL;
}
char *ret = dst;
while((*dst++ = *src++)!='\0');
return ret;
}