codice:
int main()
{
FILE *fp;
char nome_f[80];
unsigned char ***mat;
char pr;
int a,l,offset;
printf("Inserisci il nome del file su cui operare: ");
gets(nome_f);
fp = fopen(nome_f,"rb");
if(fp == NULL)
{
printf("File non trovato!\n");
system("pause");
}
else
{
carica_mat(&mat,&a,&l,&pr,&offset,fp);
ingrandisci(fp,nome_f,&mat,a,l,pr,offset);
}
close(fp);
system("pause");
return 0;
}
void alloca(unsigned char ****m,int r, int c, int p)
{
int i,j;
*m = malloc(r*sizeof(unsigned char*));
if(*m == NULL)
printf("Errore 1!!!!");
for(i = 0; i < r; i++)
{
(*m)[i] = malloc(c*sizeof(unsigned char*));
if(*m == NULL)
printf("Errore 2!!!!");
for(j = 0; j < c; j++)
{
(*m)[i][j] = malloc(p*sizeof(unsigned char));
if(*m == NULL)
printf("Errore 3!!!!");
}
}
}
void carica_mat(unsigned char ****m,int *r, int *c, char *p, int *offset, FILE *f)
{
int i,j,k;
dim_imm(f,r,c,p,offset);
alloca(m,*r, *c, *p);
rewind(f);
fseek(f,*offset,SEEK_CUR);
for(i = 0; i < *r; i++)
for(j = 0; j < *c; j++)
for(k = 0; k < *p; k++)
fread(m[i][j][k], sizeof(char),1,f);
}
void dim_imm(FILE *f, int *r, int *c, char *p, int *offset)
{
rewind(f);
fseek(f,10,SEEK_CUR);
fread(offset,sizeof(int),1,f);
fseek(f, 4, SEEK_CUR);
fread(c, sizeof(int), 1, f);
fread(r, sizeof(int), 1, f);
fseek(f,2,SEEK_CUR);
fread(p,sizeof(char),2,f);
*p /= 8;
rewind(f);
return;
}