Я столкнулся с проблемой при попытке прочитать двоичный файл фиксированного размера.Приведенный ниже код возвращает ошибку сегментации непосредственно перед закрытием файла.Чего я хочу добиться, так это вернуть int-указатель обратно в основную функцию.
Файл представляет собой необработанное изображение в градациях серого со значениями от 0 до 255, поэтому я использую unsigned char
.
Как правильно преобразовать и назначить неподписанный символ в *int
?
Любая помощь будет приветствоваться!
void readBinaryFile(char *filename, int *in){
FILE *file;
long length;
unsigned char *imagen;
int c;
file = fopen(filename, "rb");
fseek(file,0,SEEK_END);
length = ftell(file);
imagen = (unsigned char *) malloc(length);
fseek(file, 0, SEEK_SET);
fread(imagen, length, 1 , file);
int cont;
//c+4: file contains values from 0 to 255
for(c=0,cont=0;c<length;c=c+4,cont++){
in[cont] = (unsigned char) imagen[c];
}
for(cont=0;cont<length/4;cont++){
printf("%d",(int) in[cont]);
}
fclose(archivo);
free(imagen_buffer);
}
void main(int argc, char **argv){
int *in;
int fixed_size = 784;
in = (int *) malloc((fixed_size)*(fixed_size));
readBinaryFile("test.raw", in);
int c;
for(c=0;c<((fixed_size)*(fixed_size));c++){
printf("%d", (unsigned char) in[c]);
}
}