Well, I've got the perl part down to picking the box that has the next highest capacity volume as the total volume of sub-boxes. (I'm using box information available at U-Haul) Mind passing along the C algorithm?
It's at home; I'll send you the URL I found then, but if you can't wait, I just did some searches on "box bin packing algorithm" and came up with a .c source that implements it.
The problem with picking a box based on the total volume of your component boxes is that you can't expect to pack all of your boxes perfectly into a larger one. They're arbitrarily sized and you have to assume that there are going to be some gaps in and around them.