对于strncpy,strncat,strncmp三种用法其实都只是在最后多了一个参数。
目录
strncpy
strncat
strncmp
而多出来的参数为size_t为无符号整型。这时候我们就非常好理解了。我们在原本的功能添加一个长度限制。
我们知道strcnp是拷贝字符串,加上一个n就是拷贝几个字符串我们写一串代码来理解
不加n
int main()
{
char arr1[20] = "yyds";
char arr2[] = "6666";
strcpy(arr1, arr2, 3);
printf("%s", arr1);
return 0;
}
加上n
int main()
{
char arr1[20] = "yyds";
char arr2[] = "6666";
strncpy(arr1, arr2, 3);
printf("%s", arr1);
return 0;
}
结果
这就很好理解了如果我们没有加上n的话arr1中的内容是会直接被arr2中的6666所代替。
而加上限制之后就只会代替其中的n个。所以为只会有三个6把arr1的前三个字符代替。
对于这个我们就更好理解了。
我们都知道strcat是追加字符串函数
我们用代码举一个例子
不加n
int main()
{
char arr1[20] = "yyds";
char arr2[] = "1234";
strcat(arr1, arr2);
printf("%s", arr1);
return 0;
}
加上n
int main()
{
char arr1[20] = "yyds";
char arr2[] = "1234";
strncat(arr1, arr2);
printf("%s", arr1);
return 0;
}
只是我们就很好理解了,加上限制之后我们就只能从arr2中最佳固定个数的字符串。
我们首先要知道strcmp是将两个字符串全部比较,而加上限制之后我们就知道了,就是将两个字符串的前n个进行比较,相同返回0。
我们举一个例子来说明
不加n
int main()
{
char arr1[20] = "12345";
char arr2[] = "1234";
int z=strcmp(arr1, arr2);
printf("%d", z);
return 0;
}
注意结果输出1
我们加上n
int main()
{
char arr1[20] = "12345";
char arr2[] = "1234";
int z=strcnmp(arr1, arr2,4);
printf("%d", z);
return 0;
}
我们加上n之后
这时候我们就是只比较的是前四个字符,所以相同返回0