A parte il fatto che non si capisce perché restituisci sum (che c'entra? Devi restituire 0 o 1 per capire se è un numero valido o no) e hai eliminato il confronto di sum con il numero iniziale, il valore di k iniziale non è 0 e devi utilizzare un vettore. Più semplicemente, cambiando di poco il codice precedente, puoi utilizzare il logaritmo in base 10 per ottenere le cifre prima di fare la somma, ovvero
int check_Armstrong(int num) {
int copia_num = num, sum = 0, rem;
int cifre = 1+(int)(log(num)/log(10));
while (num)
{
rem = num % 10;
sum += (int)pow(rem, cifre);
num /= 10;
}
if (sum == copia_num)
return 1;
else
return 0;
}