aboutsummaryrefslogtreecommitdiffstats
path: root/src/ft_substr.c
blob: 0db72d069fad0e1777c5ae2c58f1f4321db14193 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "libft.h"
#include <stdlib.h>

char *
ft_substr (char const *s, unsigned int start, size_t len)
{
  size_t slen;
  size_t actual;
  char *sub;

  slen = ft_strlen (s);
  if (start >= slen)
    return (ft_strdup (""));
  actual = slen - start;
  if (actual > len)
    actual = len;
  sub = malloc (actual + 1);
  if (!sub)
    return (NULL);
  ft_memcpy (sub, s + start, actual);
  sub[actual] = '\0';
  return (sub);
}