sprintf
записывает данные в существующий буфер, который вы передаете в него в качестве первого параметра. В настоящее время вы вообще не указываете значение b, что означает (IIRC в C), что значение может быть любым. Если вы установите значение NULL или 0, sprintf
попытается записать в память, начиная с адреса 0.
Вам необходимо создать буфер соответствующего размера, чтобы sprintf мог записывать в него. Например:
for(i = 0;(i - 1)< n;i++)
{
char b[10];
sprintf(b, "%d", i);
}
Является ли на самом деле как вы хотите выделить буфер, конечно, зависит от того, что ваш реальный код хочет сделать с результатами.