спасибо попробую!

ся, порядка 10 вопросов и (в основном) успешных ответов, решающих ошибки сегментации, вызванные неправильным использованием fread () в C. При этом у меня такая проблема, но я не нашел решения.

У меня есть бинарный файл, содержащийint (назови этоnbins) и массивfloats (размераnbins). Когда я пытаюсь прочитать этот файл, он успешно открывается и указывает на дескриптор файла, но затем выдает ошибку ошибки сегментации при чтенииnbins int, Вот минимальный пример:

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

#define BPATH "/path/to/file"

int main(int agrc, char **argv)
{
    FILE *fd;
    int num;
    char fname[500]={};

    int nbins;
    float *coords;

    num = 5;
    sprintf(fname,"%s/file%d.dat", BPATH, num);

    if(!(fd=fopen(fname,"rb")))
    {
        printf("Can't open file: %s\n\n",fname);
        exit(0);
    }    

    printf("Reading input file:\n");
    printf("%p: %s\n", fd, fname);       // prints successfully

    fread(&nbins, sizeof(int), 1, fd);   
    printf("nbins = %d", nbins);         // seg faults before this print

    /* EDIT: the above print isn't properly flushed without an \n    
     * The seg fault was not caused by the fread(), but the lack of  
     * the above print lead to the confusion                         */

    coords = malloc(nbins * sizeof(float));
    fread(coords, sizeof(float), nbins, fd);

    fclose(fd);
    free(coords);

    return(0);
}

Файл был создан со следующим форматированием:

int nbins[1];
nbins[0] = 5;                          // this 5 is just an example...
fwrite(nbins, sizeof(int), 1, file_ptr);
fwrite(coords, sizeof(float), nbins[0], file_ptr);

Я также пытался использовать:

int *nbins = malloc(sizeof(int));
fread(nbins, sizeof(int), 1, fd);

но это не решило проблему. Файл существует и доступен для чтения; Я могу читать это просто отлично, используя Python, с NumPy'sfromfile(), Я что-то упускаю из виду? Спасибо!