Reputation: 327
I have the following problem, which I have been trying to figure out but I still can't.
I have a binary file that has 1000 random integers from 0-9, the code which I have done this with:
int main() {
FILE *fp;
int r, i;
char fp_string[600] = "/Users/mac/Library/Mobile Documents/com~apple~CloudDocs/College/Program With Persistent Data/Lab 3/num1000.bin";
fp = fopen(fp_string, "wb+");
srand(time(NULL));
for (i=0;i<1000;i++) {
r = rand()%10; //returns a pseudo-random integer between 0 and 20
fwrite(&r, sizeof(int), 1, fp);
}
fclose(fp);
return 0;
}
Okay so that works fine, now the problem comes now. If I try to use fseek to change the third value, and then read it, it won't work.
int main() {
FILE *fp;
int r, i;
char fp_string[600] = "/Users/mac/Library/Mobile Documents/com~apple~CloudDocs/College/Program With Persistent Data/Lab 3/num1000.bin";
fp = fopen(fp_string, "wb+");
r = 9;
if (fseek(fp, 3, SEEK_SET) == 0) {
fwrite(&r, sizeof(int), 1, fp);
fseek(fp, 3, SEEK_SET);
fread(&i, sizeof(int), 1, fp);
printf("\n\nr = %d, i = %d \n\n", r, i);
}
fclose(fp);
return 0;
}
'i' and 'r' are the same numbers numbers but, I tried to display all the numbers and they are all changed (as I show bellow). I have looked everywhere and I still can't find anything.
Displaying numbers before using fseek and fwrite:
7 0 8 9 6 2 0 3 4 2 5 7 7 1 1 6 7 9 8 0 8 9 8 0 2 3 1 1 3 8 1 9 8 8 2 7 6 1 5 8 0 8 3 4 9 1 5 2 2 8 2 0 9 8 5 1 8 4 2 4 8 1 2 5 2 0 6 6 1 1 0 8 6 1 3 1 4 0 9 9 7 0 1 8 1 7 9 6 3 0 6 5 7 6 5 3 4 1 1 3 5 6 0 3 2 7 9 7 3 1 5 8 2 3 4 5 0 5 0 2 4 6 8 8 1 2 4 7 4 0 7 0 3 6 2 4 9 8 3 0 3 6 5 0 0 5 3 2 3 9 9 8 3 7 4 5 5 6 8 2 9 6 0 5 7 3 9 4 6 3 2 5 4 6 1 3 1 5 9 6 3 4 1 6 4 5 5 4 3 1 1 7 1 2 1 1 3 0 4 0 4 7 7 0 1 9 8 8 9 6 8 8 2 2 8 7 0 5 5 1 4 0 7 2 0 1 1 7 8 9 6 7 3 3 0 2 5 3 4 1 2 6 5 9 2 6 1 9 5 0 4 1 0 3 4 7 6 6 6 2 7 3 3 2 3 9 8 1 0 5 3 6 6 6 5 4 6 0 0 4 3 9 7 9 5 3 2 9 0 7 8 8 3 1 6 4 7 6 1 8 0 1 6 1 8 8 3 3 5 9 9 0 8 6 2 1 7 7 8 6 8 8 0 3 0 3 1 4 6 0 2 8 7 0 7 1 1 0 6 9 1 0 3 8 2 0 4 3 1 6 4 8 0 2 2 5 2 2 4 6 4 7 1 7 1 2 9 5 8 9 0 2 4 9 2 3 0 8 9 1 8 1 7 9 2 3 7 8 7 7 1 3 2 8 8 3 5 5 1 4 2 0 7 5 3 0 8 8 8 6 7 2 6 8 6 3 0 5 8 0 2 4 8 7 9 5 8 6 2 2 4 7 3 3 4 5 5 2 9 7 5 8 3 9 9 0 1 9 5 6 2 6 7 1 9 8 4 9 5 6 1 6 3 0 7 1 6 6 2 3 8 9 6 8 2 1 5 9 5 5 3 4 9 8 7 4 6 2 0 2 1 6 6 5 0 2 4 8 8 6 0 9 4 9 1 1 5 7 6 2 2 6 2 1 7 0 2 9 1 6 8 7 1 8 9 6 6 2 8 1 8 2 0 9 5 9 0 0 0 6 4 4 8 8 4 9 3 2 1 3 7 1 2 2 1 9 0 0 2 8 1 3 6 9 5 7 9 9 1 7 2 1 3 9 1 4 4 9 3 6 7 5 9 6 8 0 7 2 1 3 0 7 3 8 9 5 0 4 9 6 5 6 7 4 9 1 9 8 2 2 2 9 6 7 0 1 0 2 4 9 9 8 8 6 2 1 2 5 8 6 2 3 8 1 4 6 0 7 8 1 5 6 2 4 4 1 2 3 8 4 6 1 6 9 0 0 9 8 7 7 5 7 9 1 4 7 5 3 0 6 8 1 1 3 1 4 7 6 9 5 7 4 0 1 8 3 0 9 3 5 9 2 4 9 3 1 8 1 9 6 5 5 4 3 6 7 6 2 1 0 1 2 0 4 1 3 7 1 2 0 1 5 5 8 5 9 7 3 0 7 3 5 7 9 1 5 2 9 6 5 9 0 9 5 4 0 4 1 6 6 1 6 8 7 7 5 1 9 8 9 1 9 4 1 5 9 5 3 5 5 1 5 9 7 4 9 0 7 1 9 5 9 6 3 0 2 7 9 3 7 5 4 6 8 7 9 6 5 8 1 8 1 9 5 2 0 5 5 4 7 0 2 2 1 9 9 7 3 4 9 7 9 0 0 1 1 8 1 7 6 5 0 4 0 4 7 1 0 3 2 5 9 3 4 4 1 6 1 0 9 8 2 1 3 9 4 5 8 0 6 7 5 6 5 3 5 4 0 4 0 0 7 7 0 5 2 3 0 6 8 9 9 1 8 0 1 4 1 2 9 4 6 6 4 1 3 4 7 0 6 5 9 6 6 3 5 4 9 6 2 6 4 9 0 8 2 1 4 8 8 0 9 5 4 2 9 6 0 2 8 0 8 9 5 0 1 6 5 4 8 4 4 9 8 8 1 4 5 1 0 3 6 9 0 2 2 4 3 9 9 5 4 0 1 4 5 2 5 8 8 6 9 7 9 9 7 2 7 1 3 8 9 1 7 2 8 5 9 1 5 8 5 5 7 3 6 3 9 4 5
Displaying numbers after using fseek and fwrite:
150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944
Thanks for the help :)
Upvotes: 0
Views: 1229
Reputation:
With this line in the second listing:
fp = fopen(fp_string, "wb+");
You're truncating the file to zero length.
You want:
fp = fopen(fp_string, "rb+");
Reference: fopen - open a stream
Upvotes: 2