Conversão de imagem PGM P5

Olá, pessoal!
Tenho que fazer um programa que leia uma imagem P5 (arquivo binário) e a reescreva apresentando a parte binária em decimal. Ficaria dessa forma:

P5

A diagonal line 10 pixels wide and 10 pixels high

10 10
255
0 255 255 255 255 255 255 255 255 255
255 0 255 255 255 255 255 255 255 255
255 255 0 255 255 255 255 255 255 255
255 255 255 0 255 255 255 255 255 255
255 255 255 255 0 255 255 255 255 255
255 255 255 255 255 0 255 255 255 255
255 255 255 255 255 255 0 255 255 255
255 255 255 255 255 255 255 0 255 255
255 255 255 255 255 255 255 255 0 255
255 255 255 255 255 255 255 255 255 0

O programa que faço com fread, ao invés de exibir 0 e 255, exibe vários número diferentes e geralmente negativos:

#include <stdio.h>
#include <stdlib.h>

int main () {

FILE* entrada;
char c, arquivo[30];
int linha = 1, i;

scanf("%s",arquivo);
entrada =fopen(arquivo,"rb");
if (entrada==NULL){
	printf("Erro: arquivo inexistente\n");
	exit(1);
}

else
{
	do{
		c = fgetc(entrada);
		printf("%c",c);
		if(c == '\n') linha++;
	}while(linha<5);
}

int decimal[101];
fread(decimal,sizeof(int),100,entrada);
decimal[100] = '\0';
for(i = 0; i<=99; i++){
	printf("%d",decimal[i]);
}

fflush(entrada);
fclose(entrada);
return 0;

}

Por favor, alguém poderia me ajudar?