I'm not quite sure what your first question is, so I'll leave that one for now, though I suspect what you mean is that entering a backspace at the prompt will produce undesired results -- if that is the case the answer is a bit more detailed than I feel up to this morning.
As for passing character arrays into a function, that is quite simple.
The address of the first element of an array and the address of a pointer to the array are identical.
The name of an array variable is synonymous with the address of first element of the array.
If your prototype is (i.e.):
Code:
int func(char *arg);
And your variable declaration is (again, i.e.):
Then the call would be:
Code:
int ret = func(str);
This is all very basic C syntax, and you've said that you aren't exactly new to all this, so I'm a bit skeptical about whether I've really answered the question.
Arrays of character arrays are similar, and there are several methods for accessing them and passing them as arguments.