> fscanf( fp, "%ld", temp_info1->size );
This would be
fscanf( fp, "%ld", &temp_info1->size );
Remember that scanf() functions accept only pointers.
Some compilers (gcc and its various ports) will diagnose when you make a mess of printf and scanf functions. Use it.