-
Jan Thorbecke authoredJan Thorbecke authored
readData.c 950 B
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "segy.h"
/**
* reads SU file and returns header and 2D array
*
* AUTHOR:
* Jan Thorbecke (janth@xs4all.nl)
* The Netherlands
**/
int readData(FILE *fp, float *data, segy *hdrs, int n1)
{
size_t nread;
int oneshot, itrace, sx, fldr;
segy hdr;
oneshot = 1;
itrace = 0;
nread = fread(&hdrs[0], 1, TRCBYTES, fp);
if (nread == 0) return 0; /* end of file reached */
if (n1==0) n1 = hdrs[0].ns;
sx = hdrs[0].sx;
fldr = hdrs[0].fldr;
while (oneshot) {
nread = fread(&data[itrace*n1], sizeof(float), n1, fp);
assert (nread == n1);
itrace++;
nread = fread(&hdr, 1, TRCBYTES, fp);
if (nread == 0) break;
assert(nread == TRCBYTES);
if ( (sx != hdr.sx) || (fldr != hdr.fldr)) { /* end of shot record */
fseek( fp, -TRCBYTES, SEEK_CUR );
break;
}
memcpy(&hdrs[itrace], &hdr, TRCBYTES);
}
return itrace;
}