You could use fseek(), you just need to calculate the number of bytes to offset before you start writing. This would be the sizeof the struct, against the number of structs before the one you want to write.

Or you could rewrite the complete file (providing you have it all in memory).

I see a small problem with your code, you are using "r+" to open the file. If you are going to write structs with fwrite (and read with fread), you should use a binary mode.