При присвоении конца строки компилятор ничего не выводит. Если его убрать, тоже не лучше. Выводятся машинные знаки
void *ft_memset(void *dest, int c, size_t n)
{
char *str;
char s;
size_t i;
i = 0;
s = (char)c;
//dest = str;
str = (char*)dest;
while (i < n-1)
{
str[i] = s;
i++;
//n--;
}
*str = '\0';
return(dest);
}
int main(void)
{
char str[50];
printf("ft:%s",((char*)(ft_memset(str, 3, 9))));
}
Ответы (1 шт):
Автор решения: Sergey
→ Ссылка
А причём тут компилятор?! У вас логическая ошибка, которая вылазит на этапе выполнения программы, а вовсе не при компиляции.
Ошибка заключается в том, что Вы неверно используете указатели на символы, из которых состоит массив.
А вторая ошибка заключается в том, что символ с кодом 3 - это не печатаемый символ. Поэтому, если бы даже программа работала правильно, printf(...) всё равно ничего бы не напечатала.
Правильнее было бы сделать как-то так:
#include <stdio.h>
#include <stddef.h>
void *ft_memset(void *dest, int c, size_t n)
{
char *str;
char s;
size_t i;
s = (char)c;
str = (char*)dest;
i = 0;
while (i < n-1)
{
str[i++] = s;
}
str[i] = '\0';
return(dest);
}
int main(void)
{
char str[50];
printf("ft: '%s'\n",((char*)(ft_memset(str, '3', 9))));
}