unsigned char *stole;
Вышеприведенный оператор объявляет stole
как указатель на unsigned char
и содержит значение мусора, указывающее на некоторую случайную ячейку памяти.
scanf("%s", stole);
Приведенный выше оператор пытается сохранить в памяти некоторую строку, указанную stole
, которая используется другой программой (по крайней мере, не выделена вашей программе для использования). Итак, когда scanf
пытается перезаписать эту память, вы получаете seg-fault
.
Попробуйте выделить память для stole
следующим образом
unsigned char stole[MAX_SIZE];
или
unsigned char *stole = malloc((MAX_SIZE+1) * sizeof(char));
// +1 for null-terminating
Динамический строковый ввод