字符串复制函数strncpy()和内存拷贝函数memcpy()

    xiaoxiao2025-02-07  42

    #include<string.h> char *strncpy(char *dest, const char *src, unsigned long n);

    功能是将指针变量src所指向的字符串复制到指针变量dest所指向的位置。而strncpy()的功能是将指针变量src所指向的字符串的前 n 个字符串复制到指针变量dest所指向的位置。只要将strcpy()掌握之后,strncpy就简单多了,关于strncpy()唯一需要注意的是如果他不是复制整个字符串,那么最后的结束标识符’\0’就不会被复制,这时候必须手动编程在后添加’\0’,否则输出时由于找不到结束符就会输出乱码,他会一直输出,直到遇到’\0’为止。

    内存拷贝函数memcpy()

    strcpy()只能复制字符串,但是memcpy()可以复制任何数据,因为他是内存拷贝函数,是直接操作内存空间。

    #include<stdio.h> void *memcpy(void *dest, const void *src, unsigned long n);

    功能是从指针变量src所指向的内存空间中复制 n 个字节的数据到指针变量 dest 所指向的内存空间。

    1 字符数组 dest 的长度一定要大于复制的字符字节数 n,否则会产生溢出,导致相邻内存空间的数据被覆盖,这样很危险。

    2 入股复制的是完整的字符串,那么字符数组 dest 的长度和复制的字节数 n 一定要考虑最后的标识符’\0’;

    3 如果不是完整复制一个字符串,而是仅仅复制前面几个 字符,那么最后的标志符“\0”,就不会被复制。这个时候在输出 dest的时候,因为找不到结束符“\0”,就不会一直往后输出,直到遇到’\0’为止。

    #include<stdio.h> #include<string.h> int main(void) { char src[20] = "i love you mom"; char dest[20] = "\0"; memcpy(dest, src, 19); printf("dest = %s\n", dest); return 0; }
    最新回复(0)