Skip to content

Instantly share code, notes, and snippets.

@zaydek-old
Last active February 10, 2017 01:16
Show Gist options
  • Save zaydek-old/bbf206a6eb649bbcb6538fe772ae8d8b to your computer and use it in GitHub Desktop.
Save zaydek-old/bbf206a6eb649bbcb6538fe772ae8d8b to your computer and use it in GitHub Desktop.
#include <stdlib.h>
#include <string.h>
void *ft_bzero(void *b, size_t len)
{
return (ft_memset(b, 0, len));
}
void *ft_memset(void *b, int c, size_t len)
{
unsigned char *t;
size_t i;
t = b;
i = 0;
while (i < len)
t[i++] = c;
return (b);
}
void *ft_memcpy(void *b1, void *b2, size_t len)
{
unsigned char *t1;
unsigned char *t2;
size_t i;
t1 = b1;
t2 = b2;
i = 0;
while (i < len)
t1[i++] = *t2++;
return (b1);
}
void *ft_memmove(void *b1, void *b2, size_t len)
{
unsigned char t[len];
ft_memcpy(t, b2, len);
ft_memcpy(b1, t, len);
return (b1);
}
void *ft_memdup(void *b, size_t len)
{
void *t;
if ((t = malloc(len)))
ft_memmove(t, b, len);
return (t);
}
size_t ft_strlen(char *s)
{
size_t i;
i = 0;
while (s[i])
++i;
return (i);
}
char *ft_strcpy(char *s1, char *s2)
{
return (ft_memmove(s1, s2, ft_strlen(s2) + 1));
}
char *ft_strncpy(char *s1, char *s2, size_t len)
{
size_t i;
ft_memmove(s1, s2, (i = ft_strlen(s2)) < len ? i : len);
if (i < len)
ft_bzero(s1 + i, len - i);
return (s1);
}
char *ft_strcat(char *s1, char *s2)
{
ft_strcpy(s1 + ft_strlen(s1), s2);
return (s1);
}
char *ft_strncat(char *s1, char *s2, size_t len)
{
char t[len + 1];
ft_strncpy(t, s2, len)[len] = 0;
return (ft_strcat(s1, t));
}
char *ft_strdup(char *s)
{
return (ft_memdup(s, ft_strlen(s) + 1));
}
char *ft_strndup(char *s, size_t len)
{
char t[len + 1];
ft_strncpy(t, s, len)[len] = 0;
return (ft_strdup(t));
}
char *ft_sstrlen(char **as, size_t len)
{
char t[len + 1];
ft_strncpy(t, *as, len)[len] = 0;
return (ft_sstrcpy(as, t));
}
char *ft_sstrcpy(char **as, char *s)
{
free(*as);
return ((*as = ft_strdup(s)));
}
char *ft_sstrncpy(char **as, char *s, size_t len)
{
free(*as);
return ((*as = ft_strndup(s, len)));
}
char *ft_sstrcat(char **as, char *s)
{
char t[ft_strlen(*as) + ft_strlen(s) + 1];
ft_strcat(ft_strcpy(t, *as), s);
return (ft_sstrcpy(as, t));
}
char *ft_sstrncat(char **as, char *s, size_t len)
{
char t[len + 1];
ft_strncpy(t, s, len)[len] = 0;
return (ft_sstrcat(as, t));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment