星辰大海不退缩 发表于 2025-10-22 19:03

字符串拷贝函数


头文件:#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:

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

int main()
{
        char buf = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
        strncpy(buf, "helloworld", 5); // helloaaaaaaaaaaaaaaaaaaaaaaaa
        printf("%s\n", buf);
        return 0;
}

结果为helloaaaaaaaaaaaaaaaaaaaaaaaa

举例2:

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

int main()
{
        int len, i;      
        char buf = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
        len = strlen(buf);
        strncpy(buf, "helloworld", 15);
        for (i = 0; i < len; i++)
        {
                printf("%c", buf);
        }
        printf("\n"); // helloworldaaaaaaaaaaaaaaaaaaaaaaa
        return 0;
}

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

OKAKAKO 发表于 2025-10-22 19:55

字符串拷贝函数很不错的使用技巧

AdaMaYun 发表于 2025-10-23 18:07

在使用这些函数的时候,必须保证dest指向的内存空间足够大

中国龙芯CDX 发表于 2025-10-24 13:46

字符串拷贝函数非常方便快速开发
页: [1]
查看完整版本: 字符串拷贝函数