copy on git
This commit is contained in:
commit
42653de246
205 changed files with 7459 additions and 0 deletions
46
libft/ft_substr.c
Executable file
46
libft/ft_substr.c
Executable file
|
|
@ -0,0 +1,46 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_substr.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: thrieg <thrieg@student.42mulhouse.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/15 11:27:50 by thrieg #+# #+# */
|
||||
/* Updated: 2025/02/16 19:05:22 by thrieg ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
static void ft_memcpy_with_nullchar(char *substring, char const *s, size_t len)
|
||||
{
|
||||
ft_memcpy(substring, s, len);
|
||||
substring[len] = '\0';
|
||||
}
|
||||
|
||||
//check for out of bound access and return NULL if s is NULL or allocation fails
|
||||
//len 0 or out of bound start just returns a null character
|
||||
char *ft_substr(char const *s, unsigned int start, size_t len)
|
||||
{
|
||||
char *substring;
|
||||
size_t slen;
|
||||
|
||||
if (!s)
|
||||
return (NULL);
|
||||
slen = ft_strlen(s);
|
||||
if (slen <= start)
|
||||
return (ft_strdup(""));
|
||||
s = &s[start];
|
||||
slen -= start;
|
||||
if (slen > len)
|
||||
substring = malloc(sizeof(char) * (len + 1));
|
||||
else
|
||||
substring = malloc(sizeof(char) * (slen + 1));
|
||||
if (!substring)
|
||||
return (NULL);
|
||||
if (slen > len)
|
||||
ft_memcpy_with_nullchar(substring, s, len);
|
||||
else
|
||||
ft_memcpy_with_nullchar(substring, s, slen);
|
||||
return (substring);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue