#include "string.h" int strlen(const char *s) { int n; for (n = 0; *s != '\0'; s++) n++; return n; } int strnlen(const char *s, size_t size) { int n; for (n = 0; size > 0 && *s != '\0'; s++, size--) n++; return n; } char * strcpy(char *dst, const char *src) { char *ret; ret = dst; while ((*dst++ = *src++) != '\0') /* do nothing */; return ret; } char * strcat(char *dst, const char *src) { int len = strlen(dst); strcpy(dst + len, src); return dst; } char * strncpy(char *dst, const char *src, size_t size) { size_t i; char *ret; ret = dst; for (i = 0; i < size; i++) { *dst++ = *src; // If strlen(src) < size, null-pad 'dst' out to 'size' chars if (*src != '\0') src++; } return ret; } int strcmp(const char *p, const char *q) { while (*p && *p == *q) p++, q++; return (int) ((unsigned char) *p - (unsigned char) *q); } int strncmp(const char *p, const char *q, size_t n) { while (n > 0 && *p && *p == *q) n--, p++, q++; if (n == 0) return 0; else return (int) ((unsigned char) *p - (unsigned char) *q); } void * memset(void *v, int c, size_t n) { char *p; int m; p = v; m = n; while (--m >= 0) *p++ = c; return v; } void * memcpy(void *dst, const void *src, size_t n) { const char *s; char *d; s = src; d = dst; if (s < d && s + n > d) { s += n; d += n; while (n-- > 0) *--d = *--s; } else { while (n-- > 0) *d++ = *s++; } return dst; }