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?