Ho risolto il problema dichiarando per ultima la variabile num. Tutto derivava dal fatto che leggevo da input una stringa assegnandola a una variabile "char" (come voi avete intuito). Dichiarando per ultima la variabile fine, essa veniva allocata subito prima di num (ho imparato che il C alloca le variabili partendo dalle ultime dichiarate). Scanf poi allocava il carattere letto come se fosse una stringa andando a sovrascrivere proprio la prima cella di memoria di num.
Ciao a tutti e grazie per l'attenzioe!
(ci sentiamo presto)