He didn't realize the headers defined how structures were laid out in memory.
If you're talking about the 'struct' keyword for C objects in memory... then they don't. You're in for a nasty surprise if you think that they do unless you're using compiler extensions.
This is basic logic used in programming that my EE taught me, that apparently your typical CS major hasn't learned.
This basic logic of your is wrong. Pragma packed.
If you don't understand why this understanding is important, well, it's not really worth arguing with you.
And as an aside, if you don't have a pretty good knowledge of law, you might consider re-evaluating your priorities. This is something that like it or not, you really should be familiar with. It will affect your life sooner or later. Knowledge of law is EXTREMELY important. Sit in some trials. I really mean this. It shocked me just how differently a trial ran than how I expected it to. Facts are of almost no importance. It was shocking to me. It was while I was waiting to argue a ticket, and the officer said he visually confirmed that the defendant was going 93 MPH, he didn't have a radar gun to confirm. I know for fact that it's impossible to tell the difference between 93 MPH and 83 MPH strictly from visual cues, and the legal penalty between the two is massive, but that fact was completely inconsequential in the court of law, because the officer had been "trained". Never mind that humans are incapable of such a distinction, the fact that it was impossible was unimportant. Knowing that, is really important.
You are too full of yourself. Knock down your arrogance a little (I've successfully represented myself in court a number of times). You can start by determining why sizeof evaluates "struct foo { char a, b };" to have a size of 4 and what you can do to force it to 2.