strcpy()函数:
strcpy()
是C语言函数库中的一个函数,用于将一个字符串从源字符串复制到目标字符串中,直到遇到空字符('\0'
)为止。
它的原型如下:
char* strcpy(char* dest, const char* src);
函数接受两个参数:dest(目标)
和src(源)
,分别表示目标字符串和源字符串。src
是一个常量字符串,不能被修改,而dest
是一个可变字符串,用于存储复制后的结果。
strcpy()
函数会将源字符串中的字符逐个复制到目标字符串中,直到遇到空字符('\0'
)。复制完成后,目标字符串的末尾将自动添加一个空字符('\0'
),表示字符串的结束。
需要注意的是,使用strcpy()
时,要确保目标字符串的空间足够大,能够容纳源字符串及其结尾的空字符,否则可能导致缓冲区溢出的问题。
下面是一个使用strcpy()
函数的示例:
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[40] = "Hi Coder!";
printf("复制前的字符串: %s\n", dest);
strcpy(dest, src); // 将src复制到dest中
printf("复制后的字符串: %s\n", dest);//会覆盖原来的字符
return 0;
}
输出结果:
复制前的字符串: Hi Coder!
复制后的字符串: Hello, World!
strncpy()函数:
char *strncpy(char *destination, const char *source, size_t num);
函数接受三个参数:
destination
:指向目标字符串的指针。source
:指向源字符串的指针。num
:要拷贝的字符数。
strncpy()
函数将源字符串的num
个字符拷贝到目标字符串中,并返回目标字符串的指针。
需要注意的是,strncpy()
函数有一些特殊的行为:
- 如果源字符串的长度小于
num
,拷贝结束后,目标字符串的剩余部分将用空字符填充。 - 如果源字符串的长度大于或等于
num
,则目标字符串将没有以空字符结尾,因此需要手动在目标字符串的最后添加空字符。
以下是strncpy()
函数的示例用法:
#include <stdio.h>
#include <string.h>
int main() {
char source[] = "Hello,World!";
char destination[10];
strncpy(destination, source, sizeof(destination));
printf("Destination: %s\n", destination);
destination[sizeof(destination) - 1] = '\0'; // 添加空字符,最后一个字符要留给‘\0’ ,表示结束
printf("Source: %s\n", source);
printf("Destination: %s\n", destination);
return 0;
}
输出结果:
Destination: Hello,Worl
Source: Hello,World!
Destination: Hello,Wor
在上述示例中,源字符串是"Hello, World!",目标字符串有10个字符的空间。strncpy()
函数将源字符串的10个字符拷贝到目标字符串中,并手动在目标字符串的最后添加了空字符。