I'm trying to write a simple c program, nothing fancy, but whenever I declare an array of char, I try to use scanf to get text from the user but then it gives me the access violation error - no 'execute/read' permission. The same thing happens when I try to declare a char * and use it. It also randomly occurs when I do a print of from an array of char which I filled using the getchar() function. Why am I getting this error from something so simple?
"Why am I getting this error"
Because, as the error says, you are attempting to read from memory for which you do not have read permission and/or attempting to execute from memory for which you do not have execute permission.
These are errors from the Simulator - so, most likely, you have either mis-configured the simulator, or your code has bugs that cause it to attempt to access invalied memory addresses.
"from something so simple?"
Just because code is "simple" doesn't make it imune to bugs!
Did you start by working through the basic "Hello world", etc, samples in the uVision Manual?