That was my experience as well. I did reasonably well in my computer science courses and busted my ass, but I certainly wasn't a 4.0 student. What set me apart was that I had a job working for my university developing real applications that shipped to real people, and I had real deadlines. So I spent a significant amount of time outside the classroom learning things not taught in the classroom and finding opportunities to apply what I'd learned.
And even then, that just got me in the door at a big company. I was doing QA and tools work for a couple of years. I had free reign to explore new and interesting ideas, but I was still shackled to QA. There were a lot of times toward the end where I just got depressed, doing the same repetitive testing, over and over again, feeling my talent wasting away.
Eventually, I found a problem that was plaguing the company's product that I could latch on to and designed and implemented a solution during a down period in our QA cycle. And even then, I had to get it in front of the right people, that is, people interested in hiring me to work on interesting problems. And even then, I had great timing on my side. They just happened to need someone to take over a major project whose previous maintainer had moved on.
But I managed to get my project into a shipping product. And from that point, it was a (relatively) short jump to moving to the right organization within the company. And now I work on a great project within a great product. I go to work every day without worrying about whether I'll be interested in what I'm doing. I just always am. But I didn't get that overnight, without proving to other people that I was worth the time of day. It's true that some graduates do go straight into working on interesting problems and shipping code, but if you're not fortunate enough to be one of them, you have to make your own career path.
The whole process of making that jump was (for me) incredibly long, arduous and stressful, full of insecurity and doubt. When I wasn't implementing my solution, I was busy worrying about whether I was wasting my time or whether anyone would take me seriously. And when I had a demo-able implementation, I had to design presentations, set up meetings, and justify my design choices in front of people who were way the hell more experienced than me. But it was an incredibly rewarding experience.
Bottom line, my education didn't prepare me for any of that. The fact that I wasn't entitled to work on the exciting stuff, that I had to do the non-engineering grunt work of selling my solution ... those were things I had to learn myself.