Почему указатель не сдвигается на переменную?
Воссоздаю функцию strdup(char const *s, unsigned int start, size_t len), и мне необходимо
сдвинуть указаель s на значение start, но какое бы не было значение start, выводится мусор. Причем на число с клавиатуры все конечно же хорошо.
Исходный код:
# include <stdlib.h>
# include <stdio.h>
char *ft_substr(char const *s, unsigned int start, size_t len)
{
char *str;
if(!(str = (char *)malloc(len + 1)))
return(NULL);
s+= start;
printf("s %c\n", *s);
while(len-- && *s)
*str++ = *s++;
*str = '\0';
return (&str[0]);
}
int main()
{
char dest[40] = "Hello my friend";
printf("ft_substr :%s\n", ft_substr(dest, 6, 9));
}
//Result
s $
ft_substr :$
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну смотрите, куда указывает str по окончании наботы? На нулевой символ.
*str = '\0';
return (&str[0]);
Вот вы его и выводите. Сделайте так, например:
char *ft_substr(char const *s, unsigned int start, size_t len)
{
char *str, *ret;
if(!(str = (char *)malloc(len + 1)))
return(NULL);
ret = str;
s+= start;
printf("s %c\n", *s);
while(len-- && *s)
*str++ = *s++;
*str = '\0';
return ret;
}