#include <stdio.h>
int main(void){
int i, j, n;
char buf[80];
fgets(buf, 80, stdin), sscanf(buf, "%x %x", &i, &j);
n = i * j;
printf("%x\n", n);
}

このような16進数同士の掛け算を行い、その答えを16進数で表示するプログラムがあるんですが、
「feeddead f00dbeef」を実行するとオーバーフロー?で上手くいきません
どこをどう変えればちゃんとした答えが出るようになるのか教えてくださいませ