Some good replies already on here... but just to give you some overview of the languages in question, maybe a slightly different perspective...
C - You don't want go near C. As has been mentioned, it is very low-level and is an old language.. were you doing OS development, it would be a different story but as it stands, C is really the wrong tool for the job when it comes to developing games. Unless you hate yourself or want a challenge of that sort, or something.
C++ - While this is still the most widely-used language in game development, and enjoys an almost elite status as a language, I feel the need to point out what has not been mentioned here yet: C++ is kind of messy. It was designed in the 80s as C with support for object orientation, and was also intended to be backwards compatible with C from the offset. This is a reason for it's popularity, but is also a reason for a very cluttered design - it's not that C++ is bad, but it has lots of mechanics and features which lots of people don't ever use - and are quite frankly unnecessary. The fact that the language is multi-paradigm (imperative with a strange sort of object orientation which isn't 100% what OOP should be) can also be potentially confusing.
Please understand that I'm not saying C++ is a bad language - it is not - but of all these languages, it has the most cluttered design, and is potentially the most difficult. The major thing that sets it apart from java and C# is that in C++, you have to handle your memory manually. You must keep tabs on everything you create and delete it at the correct time, as well as dealing with references to memory - if you mess that sort of thing up (which is very easy to do), the resultant errors are disasterous. But on the other side of the coin, memory management gives you a fantastic level of control and when done right is quite elegant. See, Java and C# still carry out the same sort of memory management tasks, except they're handled implicitly - in those cases it's still important to be aware of what it's actually doing.
Java - contrary to what other people say, Java is, I feel, rather similar to C++. They are not totally different animals, but have some important differences and do at times require different practices. Java was created with portability in mind - since it runs off a virtual machine, you can run it off anything... as long as the platform decides to support it. Which is not the case with consoles
. Still, java is a cleaner, sometimes more elegant language than C++, and it incorporates a more elegant object orientation model, but it still has it's own pitfalls. It's a generally easier language though, and this is mainly thanks to lack of memory management.
C# - this was designed with lessons learnt from both java and C++. Again ,it's actually not that dissimilar (it's not like comparing Fortran, smalltalk, Lisp, etc.... C++, java and C# all fall under the same family), and I feel that C# has the most elegant design of all these languages. It discards unnecessary elements of C++ and redefines some elements to make more use out of hem. Note that C# is a new language in most respects, and does not share the relationship that C and C++ share - it is a new design effort without backwards compatibility in mind. So the naming is a little confusing.
Overall, a great language, but very much rooted in microsoft , if that bothers you.
Whew...sorry... bit of a long post. Bottom line is: stay away from C, and between the other 3 languages mentioned here, I'd say C++ is a bad one to start with. You'll learn much more comfortably with C# and Java, and the transition to C++ is not too difficult to make once you learn the others! That is, if you choose to. They all have great API's backing them, it's simply a choice of which you like best and what exactly you aim to do. You can make a great game in any of these. And have fun!