I'm just getting started with this field,
so any information is appreciated!
I'm just getting started with this field,
so any information is appreciated!
You say in a comment that you want to support as many platforms as possible, this isn't really going to happen if C is a requirement.
A majority of platforms have C++ or Java APIs. Qt is a very portable C++ API you may want to look at. You really need to identify target platforms, porting is inevitable if you want to support many.
First of all, you aren't going to find a simulator that can simulate multiple phone operating systems. Windows mobile has its own simulator, Android has its own simulator, and the iPhone SDK has its own simulator.
You also aren't going to be able to find a framework in C which lets you target multiple mobile phone platforms. It just doesn't exist.
Unfortunately when it comes to mobile platforms writing portable code that can run on multiple systems is not easy. You can write your core model and business logic as shared code, but the UI and other phone-specific stuff will have to be rewritten for each platform you want to target.
People like Adobe are trying to create tools that let you deploy flash-based applications to multiple phone platforms, but the iPhone SDK terms do not allow this kind of cross-platform application and I'm guessing iPhone OS would be something you want to target.
I suspect that the best C framework for portable mobile phone apps is OpenKODE.
That's not to say it's very good for general app programming, or very portable. It's primarily intended for games and media (hence, no windowing toolkit) on reasonably high-end devices (hence OpenGLES is the only graphics API, although for 2D stuff that can just give you a surface) and doesn't have a lot of traction at the moment (hence is a lot more portable in theory than in practice).
But it is based on C.
Apple makes it difficult for any portable framework to truly span all significant mobile devices, unless you'd count an in-browser javascript framework. Even if the technology was there for compiled apps, dynamically linking to a framework on iPhone is out of the question, and it's conceivable that they'd forbid even a static-linked framework that they didn't like (as happened with the Flash-iPhone compiler).
That's not to say that everything was portable and lovely before Apple came along - of course it wasn't - but AFAIK Steve Jobs is the one to come out and say that total portability is bad, he's working to prevent it, and that each mobile platform should have its own framework that app-writers address directly. Previously there was a more ad hoc kind of fragmentation, that I think was more down to luck than judgement.