[产品应用] 字符串拷贝函数

[复制链接]
35|2

头文件:#include<string.h>

函数的声明:char* strcpy(char *dest, const char *src);

函数的说明:拷贝src指向的字符串到dest指针指向的内存中,\0也会拷贝。

函数的返回值:目的内存的地址。

注意:在使用此函数的时候,必须保证dest指向的内存空间足够大,否则会出现内存污染。

函数的声明: char* strncpy(char* dest,const char* src,size_t n);

函数的说明:将src指向的字符串前n个字节,拷贝到dest指向的内存中

返回值:目的内存的首地址

注意:strncpy不拷贝\0 , 如果n大于src指向的字符串中的字符个数,则在dest后面填充n-strlen(src)个\0。

举例1:

  1. #pragma warning(disable:4996)
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #include<stdio.h>
  4. #include <string.h>

  5. int main()
  6. {
  7.         char buf[100] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  8.         strncpy(buf, "helloworld", 5); // helloaaaaaaaaaaaaaaaaaaaaaaaa
  9.         printf("%s\n", buf);
  10.         return 0;
  11. }


结果为helloaaaaaaaaaaaaaaaaaaaaaaaa

举例2:

  1. #pragma warning(disable:4996)
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #include<stdio.h>
  4. #include <string.h>

  5. int main()
  6. {
  7.         int len, i;      
  8.         char buf[100] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  9.         len = strlen(buf);
  10.         strncpy(buf, "helloworld", 15);
  11.         for (i = 0; i < len; i++)
  12.         {
  13.                 printf("%c", buf[i]);
  14.         }
  15.         printf("\n"); // helloworldaaaaaaaaaaaaaaaaaaaaaaa
  16.         return 0;
  17. }


例2验证了:如果n大于src指向的字符串中的字符个数,则在dest后面填充n-strlen(src)个\0。

OKAKAKO 发表于 2025-10-22 19:55 | 显示全部楼层
字符串拷贝函数很不错的使用技巧
AdaMaYun 发表于 2025-10-23 18:07 | 显示全部楼层
在使用这些函数的时候,必须保证dest指向的内存空间足够大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

305

主题

2843

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部