It depends on the method of getting user input. I have the VM running in a small microprocessor without a keyboard, so I didn't even implement any console input. Assuming you're using this to synchronously get user input:
getstring(string[], size=sizeof string, bool:pack=false)
You can pass a packed or unpacked array, but if you want the returned string to be packed, you must set the pack parameter, otherwise it will be unpacked as it defaults to false.
I think the "A tutorial introduction" section in the Pawn Language Guide does a very good job of walking through most of the concepts any beginner will need. I highly suggest reading through it all, if not even following along with the code yourself.
-Brian