str功能的实现
程序员文章站
2022-05-07 15:20:39
...
1.strcat
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。
程序:
char *strcat(char *dest,const char *src)
{
char *addr=dest;
int i=0,j=0;
assert(dest!=NULL);
assert(src!=NULL);
if(dest==NULL)
return NULL;
while(*(dest+i)!='\0')
{
i++;
}
while(*(src+j)!='\0')
{
*(dest+i++)=*(src+j++);
}
*(dest+i)='\0';
return addr;
}
int main()
{
char a[]="abcdefg";
char b[]="hijklmn";
strcat(a,b);
printf("%s\n",a);
system("pause");
return 0;
}
2.strchr
功能:查找字符串s中首次出现字符c的位置
程序:
#include<assert.h>
#include<stdio.h>
char* my_strchr(char *s, char c)
{
assert(*s!=NULL);
assert(c!=NULL);
while((*s!='\0')&&(*s!=c))//如果写成(*s++!='\0'),则c等于s字符串第一位时会输出NULL
{
s++;
}
return (*s==c?s:(NULL));
}
void main()
{
char s[]={"asfghj"};
char c='a';
printf("%s",my_strchr(s,c));
}//代码测试时不要只取一个值,应该多取不同位置的值测试
3.strcmp
功能:C/C++函数,比较两个字符串
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1!=str2,则返回正数;
程序:
char* my_strcmp(char* dest,const char* src)
{
assert(dest!=NULL);
assert(src !=NULL);
while(*dest++ = *src++)
{
if(*dest=='\0'&&*src=='\0')
{
return 0;
}
}
return 1;
}
#include<stdio.h>
#include<string.h>
int main()
{
char a[]={"abcd"};
char b[]={"abd"};
printf("%d",my_strcmp(a,b));
return 0;
}
4.strcpy
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的 地址空间
程序:
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest,const char *src)
{
char* ret= dest;
assert(dest!=NULL);
assert(src!=NULL);
while (*dest++=*src++)
{
;
}
return ret;
}
int main()
{
char arr[10]={0};
my_strcpy(arr,"hello");
printf("%s\n",arr);
return 0;
}
5.strlen
功能:计算字符串s的(unsigned int型)长度,不包括’\0’在内
程序:
char* my_strlen(const char* str)
{
int count=0;
assert(str!=NULL);
while(*str!='\0')
{
str++;
count++;
}
return count;
}
int main()
{
int length;
char arr[]={"abcdef"};
length = my_strlen(arr);
printf("%d",length);
return 0;
}
6.strstr
功能:strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 NULL。
程序:
#include<stdio.h>
#include<string.h>
char* my_strstr(char* str,char* s)
{
int n;
if(*s != '\0')
{
while(*str)
{
for(n=0;(*str+n)==(*s+n);n++)
{
if(!*(s+n+1) == '\0')
{
return (char*) str;
}
}
str++;
}
return (NULL);
}
else
{
return (char*) str;
}
}
void main()
{
char a[]={"agdfg"};
char b[]={"g"};
printf("%s",my_strstr(a,b));
}