目录
一,strncpy函数
1,strncpy函数简介
2,strncpy函数示例
3,注意事项
二,strncat函数
1,strncat函数简介
2,strncat函数示例
3,注意事项
三,strncmp函数
1,strncmp函数简介
2,strncmp函数示例
3,注意事项
strncpy函数用于将一个字符串的一部分复制到另一个字符串中。
函数头文件:
#include
函数原型:
char * strncpy ( char * destination, const char * source, size_t num );
- dest:目标字符串,即要将源字符串复制到的位置。
- src:源字符串,即要复制的字符串。
- num:要复制的字符数。
strncpy函数将源字符串src的前n个字符复制到dest中。如果源字符串的长度小于n,则复制完源字符串后,会用空字符'\0'填充剩余的空间。
如果源字符串的长度大于或等于n,那么目标字符串将不会以空字符结尾。
: 因此,在使用strncpy函数复制字符串时,需要手动在目标字符串的最后一个字符后面添加空字符。
#include
#include
int main()
{
char dest[20];
char src[] = "helllo world!";
strncpy(dest, src, 8);
dest[8] = '\0';
printf("%s\n", dest);
return 0;
}
运行结果:
代码解释:
在上面的代码中,我们定义了一个目标字符串dest和源字符串src ,然后我们使用strncpy函数将src的前8个字符复制到dest中。由于目标字符串的长度大于等于源字符串的长度,我们需要在dest的后面添加空字符。最后,我们打印出复制后的字符串。
1,目标字符串dest必须足够大,以容纳要复制的以及额外的空字符。否则,可能会导致缓冲区溢出的问题。
2,如果源字符串的长度小于n,则目标字符串将以空字符结尾。如果源字符串的长度大于或等于n,则目标字符串将不会以空字符结尾,需要手动添加空字符。
3, strncpy函数只复制源字符串的前n个字符,而不会复制整个字符串。
strncat函数用于将一个字符串的一部分追加到另一个字符串的末尾。
函数头文件:
#include
函数原型:
char * strncat ( char * destination, const char * source, size_t num );
dest:目标字符串,即要将源字符串追加到的位置。
src:源字符串,即要追加的字符。
num:要追加的字符数。
注:
strncat函数会将源字符串src的前n个字符追加到目标字符串dest的末尾,并在追加完后在dest的末尾添加一个空字符'\0'。
#include
#include
int main()
{
char dest[20] = { "hello " };
char src[] = { "world!" };
strncat(dest, src, 5);
printf("%s\n", dest);
return 0;
}
运行结果:
1,目标字符串dest必须足够大,以容纳要追加的字符以及额外的空字符。否则,可能会导致缓冲区溢出的问题。
2,如果源字符串的长度小于n,会将源字符串的全部字符追加到目标字符串中。如果源字符串的长度大于或等于n,则只会将源字符串的前n个字符追加到目标字符串中。
3,strncat函数会在目标字符串的末尾添加一个空字符。
strncmp函数用于比较两个字符串的前n个字符是否相等。
函数头文件:
#include
函数原型:
int strncmp ( const char * str1, const char * str2, size_t num );
str1:第一个字符串。
str2:第二个字符串。
num:要比较的字符数。
#include
#include
int main()
{
char str1[] = { "abcde" };
char str2[] = { "abxyz" };
int ret = strncmp(str1, str2, 3);
if (ret == 0)
printf("str1和str2相等\n");
else if (ret > 0)
printf("str1大于str2\n");
else
printf("str1小于str2\n");
return 0;
}
运行结果:
代码解释:
在上面的代码示例中,我们定义了两个字符串str1和str2。然后,我们使用strncmp函数比较了这两个字符串的前3个字符,由于str1字符串中'c'字符的ASCII码值小于str2字符串中'x'字符的ASCII码值,所以返回一个小于0的整数,根据返回值的不同,我们打印出相应的信息。
1,如果两个字符串的长度小于n,则会比较两个字符串的全部字符,如果两个字符串的长度大于或等于n,则只会比较两个字符串的前n个字符。
2,返回值为0表示两个字符串的前n个字符完全相等。
返回值小于0表示第一个字符串的前n个字符小于第二个字符串的前n个字符。
返回值大于0表示第一个字符串的前n个字符大于第二个字符串的前n个字符。