strncmp:比较2个字符串中前n个字符的大小,字符串大小的比较是以ASCLL码表上的顺序决定的。
①若str和str1的前n个字符串大小相同,则返回0;
②若str>str1,则返回大于零的值;
③若str<str1,则返回小于零的值;
下面是对库函数strncmp的实现:
#include<stdio.h>
#include<assert.h>
#include<string.h>
int my_strcnmp(const char *str,const char *str1,int n)
{
char *p = (char *)str;
char *q = (char *)str1;
assert(str);
assert(str1);
while(n--){
if(*p == *q)
{
p++;
q++;
}
else
{
return (*p - *q);
}
}
return 0;
}
int main()
{
char str[]="You are beautiful!";
char str1[]="You are great!";
printf("%d\n",my_strncmp(str,str1,20));
printf("%d\n",strncmp(str,str1,20));//与上面实现的库函数作比较。
return 0;
}
运行的结果如下:
n为3的时候的运行结果;
n为20时运行的结果:
strncat:在字符串的结尾追加n个字符,从而实现字符串的拼接。
编写的代码如下:
#include<stdio.h>
#include<string.h>
#include<assert.h>
char *my_strncat(char *str,char *str1,int l,int s)
{
char *p = str;
char *q = str1;
assert(str);
assert(str1);
while(l--)
{
*p++;
}
while(s--)
{
*p++=*q++;
}
return p;
}
int main()
{
int len = 0;
int sen = 0;
char str[100]="How beautiful!";
char str1[]="Yeah.";
len=strlen(str);
my_strncat(str,str1,len,6);
printf("%s\n",str);
//printf("%s\n",strncat(str,str1,0));
return 0;
}
运行的结果是:How beautiful!Yeah.