? srcat()
char*strcat(char *dest, const char *src)
将src字符串连接到dest尾部,'\0’也会追加过去
#include<stdio.h>
void my_strcat(char*dest,const char*src)
{
while(*dest)//找到dest字符串中'\0'的位置
{
dest++;
}
while(*dest++=*src++);//将src中的字符串连接到dest末尾
}
int main()
{
char dest[100]="hello";
char src[]="world";
my_strcat(dest,src);
printf("%s\n",dest);
return 0;
}
输出结果:helloworld
strncat()
char*strcat(char *dest, const char *src,size_t n)
将src字符串的前你个连接到dest尾部,'\0’也会追加过去
#include<stdio.h>
void my_strncat(char*dest,const char*src,size_t n)
{
while(*dest)//找到dest字符串中'\0'的位置
{
dest++;
}
while((*dest++=*src++)&&--n);//将src中的字符串连接到dest末尾,n=0时也会进行赋值
}
int main()
{
char dest[100]="hello";
char src[]="world";
my_strcat(dest,src,3);
printf("%s\n",dest);
return 0;
}
输出结果:hellowor
strcmo()
char**strcmp(char* *s1,const char *s2)
比较s1和s2的大小,比较的是字符ACSLL码的大小
#include<stdio.h>
void my_strcmp(char*s1,const char*s2)
{
while(*s1==*s2)
{
if(*s1!='\0'&&--s2)
{
return 0;
s1++;
s2++;
}
}
return *s1>*s2?1:-1;
}
int main()
{
char ch1[]="hello world";
char ch2[]="hello world";
int v=my_strcmp(ch1,ch2);
if(v=0)
{
printf("相等\n");
}
else if(v=1)
{
printf("s1大\n");
}
else
{
pirntf("s2大\n");
}
return 0;
}
输出结果:相等
strncmo()
char * strcmp(char *s1,const char *s2,size_t n)
比较s1和s2前你个字符的大小的大小,比较的是字符ACSLL码的大小
#include<stdio.h>
void my_strncmp(char*s1,const char*s2,size_t n)
{
int i;
for(i=0;i<n&&s1[i]&&s2[i];i++)//s1[i]&&s2[i]判断未至结尾
{
if(s1[i!=s2[i]])
{
return s1[i]>s2[i]?1:-1;
}
}
return 0;
}
int main()
{
char ch1[]="hello world";
char ch2[]="hello world";
int v=my_strncmp(ch1,ch2,5);
if(v=0)
{
printf("相等\n");
}
else if(v=1)
{
printf("s1大\n");
}
else
{
pirntf("s2大\n");
}
return 0;
}
输出结果:相等