这些单位n是字节,参数中比刚刚的那些函数实现相比,第三个参数是size_t n
如果要拷贝的个数,是大于源字符串本身的大小时,会自动补\0
,直到n个
对于追加strncat,追加结束之后,会自动补一个0,这样能保证追加完的目标仍然是一个字符串。
注意:
这里最需要注意的是,如果传入的参数n是大于源字符串的大小时,并不会一直自动补0,而是目标字符串是什么,那个位置的字符就是什么,这一点是和strncpy是不一样的
举例说明:
-
对于strncpy
char arr1[10] = "abcdefgh"; char arr2[] = "bit"; strncpy(arr1, arr2, 6); // bit000gh
-
对于strncat
char arr1[30] = "hello\0xxxxxxxxx"; char arr2[] = "world"; strncat(arr1, arr2, 8); // helloworld\0xxxxx