Dear all:
Below will only print to Record #49 and encounters segmentation fault, I found that if I take the second fseek() off, everything works fine, can anyone enlighten me as to why the second fseek() won't work, thanks
Code:
#include <unistd.h>
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
typedef struct {
int integer;
char string[12];
} RECORD;
#define NRECORDS (50)
int main () {
RECORD record;
int i;
FILE *fp;
fp = fopen("records.dat", "w+");
for (i=0; i<NRECORDS; i++) {
record.integer = i;
sprintf(record.string, "RECORD - %d", i);
fprintf(stdout, "RECORD - %d\n", i);
fwrite(&record, sizeof(record), 1, fp);
}
fclose(fp);
fp = fopen("records.dat", "w+");
fseek(fp, 43*sizeof(record), SEEK_SET);
fread(&record, sizeof(record), 1, fp);
record.integer = 999;
sprintf(record.string, "RECORD - %d\n", record.integer);
fseek(fp, 43*sizeof(record), SEEK_SET);
// it dies here
printf("after setting to 999 \n");
fwrite(&record, sizeof(record), 1, fp);
fclose(fp);
return 0;
}