目录
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个字符。