Да, int вместно FILE* - это эпик фейл. Спутал, называется с системным вызовом open :-)
p.s. хотя, вероятно - сработало бы на системах в которых sizeof(int)==sizeof(FILE*)
(ЕМНИП, размер int-а же по стандарту должен быть 4 байта, а вот указатели не регламентируются, да и, например в x64 4-х не хватит)
int answer() {
char* answerFileName = "/dev/zero";
int f = fopen(answerFileName, "rb");
if(!f) return -1;
int answer;
fread(f, sizeof(int), &answer);
fclose(f);
return answer;
}

Как-то так.