「内存操作函数」memset、memcpy、memmov、memchr
void *memset(void *s, int c, size_t n) {
char *xs = s;
while (n--) *xs++ = c;
return s;
}void *memcpy(void *dest, const void *src, size_t n) {
char *tmp = dest;
const char *s = src;
while (n--) *tmp++ = *s++;
return dest;
}void *memmove(void *dest, const void *src, size_t n) {
char *tmp;
const char *s;
if (dest <= src) {
tmp = dest;
s = src;
while (n--) *tmp++ = *s++;
} else {
tmp = dest;
tmp += n;
s = src; s += n;
while (n--) *--tmp = *--s;
}
return dest;
}int memcmp(const void *s1, const void *s2, size_t n) {
const unsigned char *su1, *su2;
int res = 0;
for (su1 = s1, su2 = s2; n > 0; su1++, su2++, n--)
if ((res = *su1 - *su2) != 0) break;
return res;
}void *memchr(const void *s, int c, size_t n) {
const unsigned char *p = s;
while (n-- != 0) {
if ((unsigned char)c == *p++) {
return (void *)(p - 1);
}
}
return NULL;
}