Then in each program, where you have the struct, you just have #include "db_struct.h"
Where you add it in the structure is entirely up to you. Immediately after desc seems logical and is consistent with your input data order. But your programs wouldn't care at all if you put the ID anywhere else in the structure. You only have to ensure that it's consistent between the programs (see the header file above).
A big question would be
Do you care about backward compatibility for existing "Inventory.dat" files?
When opening a file, you should always check that it has opened OK. Also the state should be checked after a file operation to make sure the operation has completed OK.