Dear all:
I have the following:
Code:
typedef struct {
int number;
char str[15];
} RECORD;
#define NUM_RECORDS (50)
int main () {
RECORD records;
int i;
FILE *fptr;
fptr = fopen ("records.dat", "w+");
for (i=0; i<NUM_RECORDS; i++) {
records.number = i;
sprintf(records.str, "RECORD - %d", i);
fwrite (&records, sizeof(&records), 1, fptr);
}
fclose (fp);
fptr = fopen ("records.dat", "r+");
fseek (fptr, 30*sizeof(records), SEEK_SET);
fread (&records, sizeof(records), 1, fptr);
records.number = 500;
sprintf(records.str, "RECORD - %d", records.number);
fseek (fptr, 30*sizeof(records), SEEK_SET);
fwrite (&records, sizeof(records), 1, fptr);
fseek (fptr, sizeof(records), SEEK_END);
rewind (fptr);
for (i=0; i<NUM_RECORDS; i++) {
fread(&records, sizeof(records), 1, fptr);
printf("%d\n", records.number);
printf("%s\n", records.str);
}
fclose (fptr);
return 0;
}
But it didn't print all 50 records in this format:
0
RECORD - 0
1
RECORD - 1
.
.
.
.
Instead, it prints the following:
0
4
8
12
16
20
24
28
32
!
36
%
40
)
44
-
48
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
500
RECORD - 500
500
RECORD - 500
500
RECORD - 500
500
RECORD - 500
500
RECORD - 500
500
RECORD - 500
500
RECORD - 500
What did I do wrong?
Thanks.
barramundi9