C的进阶4 (strcpy()与strncpy()函数)

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个字符拷贝到目标字符串中,并手动在目标字符串的最后添加了空字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值