跳至内容

C 编程/C 参考/非标准/memccpy

来自维基教科书,开放的书籍,为开放的世界

Memccpy 函数(代表 "内存中复制字节")主要是 C 标准库中的一个函数,通常与某些类型的编程语言相关联。此函数在内存区域中的字符串上操作。memccpy 函数将字节从一个内存区域复制到另一个内存区域,在遇到某个字节 X(转换为无符号字符)或复制了 n 个字节后停止,以先发生者为准。

 void *memccpy (void *dest, const void *src, int c, size_t n);

参数 描述
dest
它指向目标字符串的位置。
src
它指向源字符串的位置。
c
它指定要搜索和复制的字符。
n
它指定要复制的字符数。

在上面的语法中,size_t 是一个 typedef。它是在 stddef.h 中定义的无符号数据类型。

这里,memccpy 函数将从 src 内存区域中的字节复制到 dest,在遇到字节 c 的第一个出现或复制了 n 个字节后停止,以先发生者为准。这里字符 c 也会被复制。


返回值

[编辑 | 编辑源代码]
memccpy 函数返回指向 dest 中 c 之后下一个字符的指针,如果在 src 的前 n 个字符中没有找到 c,则返回 NULL。


 
#include <memory.h>
#include <stdio.h>
#include <string.h>

char string1[60] = "Taj Mahal is a historic monument in India.";

int main( void ) {

   char buffer[61];
   char *pdest;
   printf( "Function: _memccpy 42 characters or to character 'c'\n" );
   printf( "Source: %s\n", string1 );
   pdest = _memccpy( buffer, string1, 'c', 42);
   *pdest = '\0';
   printf( "Result: %s\n", buffer );
   printf( "Length: %d characters\n", strlen( buffer ) );
}
Output
Function: _memccpy 42 characters or to character 'c'
Source: Taj Mahal is a historic monument in India.
Result: Taj Mahal is a historic
Length: 23 characters




#include <stdio.h>
#include <string.h>

char *msg = "This is the string: not copied";

void main() {

    char buffer[80];
    memset( buffer, '\0', 80 );
    memccpy( buffer, msg, ':', 80 );
    printf( "%s\n", buffer );
  }
Output
This is the string:



应用使用

[编辑 | 编辑源代码]
memccpy 函数不会检查接收内存区域的溢出。

www.pubs.opengroup.org
www.kernel.org
www.sandia.gov

  • memcpy
  • memmove
  • strcpy
  • memcmp
  • memset
  • strncpy
华夏公益教科书