strncpy与strncat当n大于字符串长度时的区别

  • strncat是将s2最多n个字符连接接到s1,如过n小于或等于s2的长度(不包括结束符'\0'),不管是否到了字符串末尾,都会在最后结果后面加上一个’\0’;

如果n大于s2的长度,那么只连接包括s2结束符在内的strlen(s2)+1个字符,此时strncat与strcat得到同样的结果。

  • strncpy是将最多n个字符复制到s1起始指针的位置,如果n小于或等于s2的长度,只复制这n个字符;

如果n大于s2的长度,那么除了复制s2的全部字符(不包括它的结束符),还会在末尾补上n-strlen(s2)个'\0'

  • 测试代码
#include <string.h>

#include <stdio.h>

int main(int argc, char **argv)

{

	char a[11]="123abcdefg";

	char b[]="123";

	char c[]="pq";

	strcpy(a,c);

	int i = 0;

	for(; i<11; printf("%c",a[i]),i++);printf("\n");



	strncat(a,b,6);//会在最后结果后面加上一个空字符

	for(i=0; i<11; printf("%c",a[i]),i++);printf("\n");



	strncpy(a,b,6);

	for(i=0; i<11; printf("%c",a[i]),i++);printf("\n");

} 
  • 输出

strncpy与strncat当n大于字符串长度时的区别

你可能感兴趣的:(字符串)