106 lines
1.7 KiB
C
106 lines
1.7 KiB
C
void memset(char *ptr, char value, int len) {
|
|
int i;
|
|
for (i=0;i<len;i++) {
|
|
ptr[i] = value;
|
|
}
|
|
}
|
|
|
|
void memcpy(void* dest, void* src, int size)
|
|
{
|
|
unsigned char *pdest = (unsigned char*) dest;
|
|
unsigned char *psrc = (unsigned char*) src;
|
|
|
|
int loops = (size / sizeof(unsigned int));
|
|
for(int index = 0; index < loops; ++index)
|
|
{
|
|
*((unsigned int*)pdest) = *((unsigned int*)psrc);
|
|
pdest += sizeof(unsigned int);
|
|
psrc += sizeof(unsigned int);
|
|
}
|
|
|
|
loops = (size % sizeof(unsigned int));
|
|
for (int index = 0; index < loops; ++index)
|
|
{
|
|
*pdest = *psrc;
|
|
++pdest;
|
|
++psrc;
|
|
}
|
|
}
|
|
|
|
char *strncpy(char *dest, char *src, int len) {
|
|
char *ptr = src;
|
|
char *ptr2 = dest;
|
|
int i = 0;
|
|
while (*ptr != '\0' && i != len) {
|
|
*ptr2 = *ptr;
|
|
*(ptr2 + 1) = '\0';
|
|
ptr2++;
|
|
ptr++;
|
|
len++;
|
|
}
|
|
return dest;
|
|
}
|
|
|
|
|
|
char *strcpy(char *dest, char *src) {
|
|
char *ptr = src;
|
|
char *ptr2 = dest;
|
|
while (*ptr != '\0') {
|
|
*ptr2 = *ptr;
|
|
*(ptr2 + 1) = '\0';
|
|
ptr2++;
|
|
ptr++;
|
|
}
|
|
return dest;
|
|
}
|
|
|
|
int strncmp(const char *s1, const char *s2, int n) {
|
|
while ((*s1) && (*s1 == *s2) && n > 0) {
|
|
--n;
|
|
++s1;
|
|
++s2;
|
|
}
|
|
return (*s1 - *s2);
|
|
}
|
|
|
|
int strcmp(const char *s1, const char *s2) {
|
|
while ((*s1) && (*s1 == *s2)) {
|
|
++s1;
|
|
++s2;
|
|
}
|
|
return (*s1 - *s2);
|
|
}
|
|
|
|
int strlen (char *str) {
|
|
int i = 0;
|
|
|
|
while (*str != '\0') {
|
|
str++;
|
|
i++;
|
|
}
|
|
return i;
|
|
}
|
|
|
|
char *strcat(char *dest, char *src) {
|
|
char *ptr = dest;
|
|
while (*dest != '\0') {
|
|
dest++;
|
|
}
|
|
|
|
while (*src != '\0') {
|
|
*dest = *src;
|
|
dest++;
|
|
*dest = '\0';
|
|
src++;
|
|
}
|
|
return ptr;
|
|
}
|
|
|
|
char toupper(char c) {
|
|
if (c > 64 && c < 91) {
|
|
return c;
|
|
} else {
|
|
return c - 32;
|
|
}
|
|
}
|