ft_substr


💻 ft_substr
文字列sの開始位置からlenを切り取ることによって返される関数.
📃 ft substrプロトタイプ
char	*ft_substr(char const *s, unsigned int start, size_t len)
🔩 parameters
*s:切り取るソース文字列
start:文字列の切り取りを開始する位置
len:文字列の切り取りサイズ
📬 return
char*型リターン
  • startがsの長さより大きい場合、0を含む記憶空間
  • が戻る.
  • 文字列を切り取った場合は、末尾に0を入れて文字列を返し、mallocにストレージスペースを割り当てる必要があります.
    🧨 注意事項
    startの値が文字列sの長さより大きい場合、
  • ft strcheck関数は、値0を含む記憶領域を割り当て、
  • を返します.
  • lencheck関数は、切り取りが完了する文字列の長さを確認する関数であり、sの長さからstartの長さを減算すると、lenの長さがより長い場合はs-start、lenがより短い場合はlenを返す.
    クリップされた
  • 文字列はmallocを使用して記憶領域を割り当てて返さなければなりません.文字列の末尾には0が含まれている必要があります.
  • malloc割当てに失敗した場合NULLを返し、関数
  • を終了する
    パスワード
    
    #include "libft.h"
    
    char	*ft_startcheck(void)
    {
    	char	*rtv;
    
    	rtv = malloc(sizeof(char));
    	if (rtv == 0)
    		return (NULL);
    	rtv[0] = '\0';
    	return (rtv);
    }
    
    int	lencheck(char const *s, unsigned int start, size_t len)
    {
    	if ((ft_strlen(s) - start) < len)
    		return ((ft_strlen(s) - start));
    	else
    		return (len);
    }
    
    char	*ft_substr(char const *s, unsigned int start, size_t len)
    {
    	size_t	i;
    	size_t	j;
    	char	*sub;
    
    	i = 0;
    	j = 0;
    	if (ft_strlen(s) < start)
    		return (ft_startcheck());
    	sub = (char *)malloc(sizeof(char) * (lencheck(s, start, len) + 1));
    	if (sub == 0)
    		return (NULL);
    	while (s[i])
    	{
    		if (i >= start && j < len)
    		{
    			sub[j] = s[i];
    			j++;
    		}
    		i++;
    	}
    	sub[j] = '\0';
    	return (sub);
    }