Array not working as intended?

expected each character I input through serial would be put into an array, is this not the case? for example if I put "r2" it would mean val[] = { "r", 2};

It would, IF val was big enough. How big IS val?

It's your code. You're supposed to know.

Also keep in mind that Serial data transmission is ssslllooowww. The Arduino can read it orders of magnitude faster than it arrives. You need some way to tell the Arduino to read and store data until the end of the packet arrives, and then use that packet.