123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- .TH MEMORY 2
- .SH NAME
- memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations
- .SH SYNOPSIS
- .B #include <u.h>
- .br
- .B #include <libc.h>
- .PP
- .ta \w'\fLvoid* 'u
- .B
- void* memccpy(void *s1, const void *s2, int c, ulong n)
- .PP
- .B
- void* memchr(void *s, int c, ulong n)
- .PP
- .B
- int memcmp(void *s1, void *s2, ulong n)
- .PP
- .B
- void* memcpy(void *s1, void *s2, ulong n)
- .PP
- .B
- void* memmove(void *s1, void *s2, ulong n)
- .PP
- .B
- void* memset(void *s, int c, ulong n)
- .SH DESCRIPTION
- These functions operate efficiently on memory areas
- (arrays of bytes bounded by a count, not terminated by a zero byte).
- They do not check for the overflow of any receiving memory area.
- .PP
- .I Memccpy
- copies bytes from memory area
- .I s2
- into
- .IR s1 ,
- stopping after the first occurrence of byte
- .I c
- has been copied, or after
- .I n
- bytes have been copied, whichever comes first.
- It returns a pointer to the byte after
- the copy of
- .I c
- in
- .IR s1 ,
- or zero if
- .I c
- was not found in the first
- .I n
- bytes of
- .IR s2 .
- .PP
- .I Memchr
- returns a pointer to the first
- occurrence of byte
- .I c
- in the first
- .I n
- bytes of memory area
- .IR s,
- or zero if
- .I c
- does not occur.
- .PP
- .I Memcmp
- compares its arguments, looking at the first
- .I n
- bytes only, and returns an integer
- less than, equal to, or greater than 0,
- according as
- .I s1
- is lexicographically less than, equal to, or
- greater than
- .IR s2 .
- The comparison is bytewise unsigned.
- .PP
- .I Memcpy
- copies
- .I n
- bytes from memory area
- .I s2
- to
- .IR s1 .
- It returns
- .IR s1 .
- .PP
- .I Memmove
- works like
- .IR memcpy ,
- except that it is guaranteed to work if
- .I s1
- and
- .IR s2
- overlap.
- .PP
- .I Memset
- sets the first
- .I n
- bytes in memory area
- .I s
- to the value of byte
- .IR c .
- It returns
- .IR s .
- .SH SOURCE
- All these routines have portable C implementations in
- .BR /sys/src/libc/port .
- Most also have machine-dependent assembly language implementations in
- .BR /sys/src/libc/$objtype .
- .SH SEE ALSO
- .IR strcat (2)
- .SH BUGS
- ANSI C does not require
- .I memcpy
- to handle overlapping source and destination; on Plan 9, it does, so
- .I memmove
- and
- .I memcpy
- behave identically.
- .PP
- If
- .I memcpy
- and
- .I memmove
- are handed a negative count, they abort.
|