目录

一,strncpy函数

1,strncpy函数简介

2,strncpy函数示例 

3,注意事项

二,strncat函数

1,strncat函数简介

2,strncat函数示例 

3,注意事项

三,strncmp函数

1,strncmp函数简介

2,strncmp函数示例 

3,注意事项


一,strncpy函数

1,strncpy函数简介

strncpy函数用于将一个字符串的一部分复制到另一个字符串中。

🍂函数头文件:

#include <string.h>

🍂函数原型: 

char * strncpy ( char * destination, const char * source, size_t num );
  • dest:目标字符串,即要将源字符串复制到的位置。
  • src:源字符串,即要复制的字符串。
  • num:要复制的字符数。 

🎈 strncpy函数将源字符串src的前n个字符复制到dest中。如果源字符串的长度小于n,则复制完源字符串后,会用空字符'\0'填充剩余的空间。

🎈如果源字符串的长度大于或等于n,那么目标字符串将不会以空字符结尾。

 

🧅 因此,在使用strncpy函数复制字符串时,需要手动在目标字符串的最后一个字符后面添加空字符。

2,strncpy函数示例 

#include <stdio.h>
#include <string.h>

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的后面添加空字符。最后,我们打印出复制后的字符串。

3,注意事项

1,目标字符串dest必须足够大,以容纳要复制的以及额外的空字符。否则,可能会导致缓冲区溢出的问题。

2,如果源字符串的长度小于n,则目标字符串将以空字符结尾。如果源字符串的长度大于或等于n,则目标字符串将不会以空字符结尾,需要手动添加空字符。

3, strncpy函数只复制源字符串的前n个字符,而不会复制整个字符串。

二,strncat函数

1,strncat函数简介

strncat函数用于将一个字符串的一部分追加到另一个字符串的末尾。

  🍂函数头文件:

#include <string.h>

🍂函数原型: 

char * strncat ( char * destination, const char * source, size_t num );

dest:目标字符串,即要将源字符串追加到的位置。

src:源字符串,即要追加的字符。

num:要追加的字符数。 

🎈注:

strncat函数会将源字符串src的前n个字符追加到目标字符串dest的末尾,并在追加完后在dest的末尾添加一个空字符'\0'。

2,strncat函数示例 

#include <stdio.h>
#include <string.h>

int main()
{
	char dest[20] = { "hello " };
	char src[] = { "world!" };

	strncat(dest, src, 5);
	printf("%s\n", dest);

	return 0;
}

 🍂运行结果:

3,注意事项

1,目标字符串dest必须足够大,以容纳要追加的字符以及额外的空字符。否则,可能会导致缓冲区溢出的问题。

2,如果源字符串的长度小于n,会将源字符串的全部字符追加到目标字符串中。如果源字符串的长度大于或等于n,则只会将源字符串的前n个字符追加到目标字符串中。

3,strncat函数会在目标字符串的末尾添加一个空字符

三,strncmp函数

1,strncmp函数简介

strncmp函数用于比较两个字符串的前n个字符是否相等。

  🍂函数头文件:

#include <string.h>

 🍂函数原型:  

int strncmp ( const char * str1, const char * str2, size_t num );

str1:第一个字符串。

str2:第二个字符串。

num:要比较的字符数。  

2,strncmp函数示例 

#include <stdio.h>
#include <string.h>

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的整数,根据返回值的不同,我们打印出相应的信息。

3,注意事项

1,如果两个字符串的长度小于n,则会比较两个字符串的全部字符,如果两个字符串的长度大于或等于n,则只会比较两个字符串的前n个字符。

2,返回值为0表示两个字符串的前n个字符完全相等

返回值小于0表示第一个字符串的前n个字符小于第二个字符串的前n个字符。

返回值大于0表示第一个字符串的前n个字符大于第二个字符串的前n个字符。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐