Edit: for my class I have to use scanf
. So recommending other ways of input is not the solution I am looking for (if there is one that involves scanf).
If I am reading in user input for a small project (for example, a game). Lets say I ask would you like to play?
This would accept a yes
or no
answer. So i write up some simple code like this:
#include <stdio.h>
int main(void)
{
char string[3]; //The max number of letters for "yes".
printf("Would you like to play?");
scanf("%s", string);
}
So this code should simply ask them to input yes
or no
. I am setting the length of my char array
to size 3
. This way it is large enough to hold yes
and also no
. But if someone were to enter invalid input such as yesss
, I know how to compare the string afterwards to handle such an event, but wouldn't this technically/possibly overwrite other local variables I have declared because it would extend outside the length of my array? If so, is there a way to handle this to restrict 3 input characters or something? And if not, why/how does it know to only input for the size of 3?
*Note: I am new to C and I couldn't find much on this so I appreciate it even if this is simple. Because I am clearly missing something. I come from a java background where this wouldn't even be an issue.
Your array needs to be able to hold four char
s, since it must also contain the 0-terminator. With that fixed, specifying a maximal length in the format,
scanf("%3s", string);
ensures that scanf
reads no more than 3 characters.