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