char *str = (char*)malloc((n+1)*sizeof(char));
Раcпишите что тут делает каждая команда)
Выделение памяти на (n+1)*размер символьного типа , каст к указателю на символьный тип и инициализация переменной str типа указатель на символьный тип.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей