C语言string函数详解:strdup, strcpy, strncpy

0 下载量 72 浏览量 更新于2024-08-29 收藏 88KB PDF 举报
本文主要介绍了C语言中与字符串操作相关的几个关键函数,包括`strdup`、`strcpy`和`strncpy`。这些函数在处理字符串复制和内存管理时非常常用。 1. `strdup`函数 `strdup`函数用于创建一个字符串副本,其功能是从源字符串`src`拷贝内容并分配新的内存空间。函数原型为`char *strdup(const char *s)`。返回值是拷贝后字符串的指针。在示例代码中,`strdup`被用来复制字符串"abcde",然后通过`printf`打印复制的字符串,并使用`free`释放分配的内存。 ```c #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *dup_str, *string = "abcde"; dup_str = strdup(string); printf("%s", dup_str); free(dup_str); return 0; } ``` 2. `strcpy`函数 `strcpy`函数用于将源字符串`str2`的内容完全复制到目标字符串`str1`中。函数原型为`char *strcpy(char *str1, char *str2)`。返回值是`str1`的指针。在示例中,字符串"abcdefghi"被复制到`string`数组中,并打印复制后的字符串。 ```c #include <stdio.h> #include <string.h> int main() { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1); printf("The string is: %s\n", string); return 0; } ``` 3. `strncpy`函数 `strncpy`函数与`strcpy`类似,但允许指定要复制的字符数量。函数原型为`char *strncpy(char *dest, const char *src, int count)`。它会拷贝`src`中的`count`个字符到`dest`中,但不会自动添加字符串结束符`\0`。因此,在使用`strncpy`时需额外小心,确保在适当的位置添加结束符。在示例中,20个'b's被复制到长度为5的`dest`数组中。 ```c #include <stdio.h> #include <string.h> int main() { char *src = "bbbbbbbbbbbbbbbbbbbb"; // 20 'b's char dest[5]; strncpy(dest, src, 5); // 注意这里没有自动添加'\0' dest[4] = '\0'; // 添加字符串结束符 printf("The string is: %s\n", dest); return 0; } ``` 这3个函数都是C语言标准库`<string.h>`的一部分,它们在处理字符串时提供了便利。然而,使用`strncpy`时需特别注意,因为它不保证在目标字符串末尾添加`'\0'`,可能导致安全问题。在实际编程中,确保正确地处理内存分配和字符串复制至关重要,以避免内存泄漏和缓冲区溢出等错误。