/ libft / src / ft_basics / ft_substr.c
ft_substr.c
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   ft_substr.c                                        :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: ll-hotel <ll-hotel@student.42lyon.fr>      +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2023/11/07 20:28:44 by ll-hotel          #+#    #+#             */
 9  /*   Updated: 2024/04/17 23:27:14 by ll-hotel         ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #include <stdlib.h>
14  
15  char	*ft_substr(const char *s, unsigned int start, size_t len)
16  {
17  	char	*p;
18  	size_t	i;
19  	size_t	l;
20  
21  	l = 0;
22  	while (s[l])
23  		l++;
24  	len *= start <= l;
25  	if (len > l - start)
26  		len = l - start;
27  	p = malloc(sizeof(char) * (len + 1));
28  	if (!p || !s)
29  		return (NULL);
30  	i = -1;
31  	while (++i < len && s[start + i])
32  		p[i] = s[start + i];
33  	p[i] = 0;
34  	return (p);
35  }