I think you'll find that C# is more akin to C++ than C. I also think that C# will take you in different directions than C, since it is Object Oriented and is fully integrated with the .net librairies, including creating windowed GUI's, web-based, and data based applications. Due to it's very basic code, C, I believe, is favored by many of those that do embedded programming.
@S, I'm going to write no. Many years ago before we had C almost everywhere I wrote in assembler. That demanded we know the processor and system to the core. When we moved to C we didn't have to know as much since it's there to remove the requirement to be intimate with the host details or even what CPU was being used.
As to the assumptions, a google search could confirm that.
You can write programs with C. You can even write Windows, Mac, or Linux GUI programs with C. The main disadvantage is that you have to use the native API's for each type of machine, which can create major problems when the OS decides to change the API's you rely on. Another aspect to consider, since C doesn't lend itself to an Object Oriented approach, it's very easy to get into bad programming habits.
If embedded programming is to be your focus, then C is a very good place to start. There are also several good online tutorials that teach using C in embedded programming.
@tinstaafl, this is a really good area where your choice of C or such can matter. That is, picking C for embedded work is one of your best choices since there's a chance others may understand what you did and be able to maintain or fix it later.
We all have stories. One job had a crushing requirement on cost so the cheapest microcontroller was going to be used and it had no RAM. Just registers and a few hundred bytes of flash memory. The task at hand was to add functionality to an existing system that was omitted and the product was already being sold at or below cost. A salvage job. This meant assembler was the choice and it was done but few dared to review that one. Once done the product finally was sold off and the company moved on much the wiser.
No, you are wrong. C is not C#. C# is built on a common language runtime with a just in time compiler. C# is c-esque, but not C. C# is more akin to a refined language such as Java. In fact Java has recently tried to emulate some of C# functionality LINQ -> Streams api. The common language runtime is available to several languages including VB.NET, etc. In order for C/C++ too create managed code they have to implement the trappings of very complex management code in order to interoperate. C++/C has pointers. C# has object references. In fact when a student learns C# the usage of pointers is underemphasized, whereas in C/C++ it is overemphasized. Furthermore C# implements MSTLE which is a bytecode scheme which is similar to Java bytecodes. The MSTLE is compiled (at runtime by the jit compiler) into a custom tailored machine code for whichever operating system it is in fact running on. C# is something much more approachable than C/C++. In fact you should add back onto the DANNI WEB site the missing software column C#. C# is a very High level language, even more high level than C++.