I have hard time understanding how scanf
in C works. I need the code below to fail with the input 123 foo
.
#include <stdio.h>
int main () {
int i;
if (scanf ("%d text", &i) != 1) {
return 1;
}
return 0;
}
I found in C refs that scanf
correctly returns the number of successfully assigned arguments (there's 1 specifier in my case), so I can see why the condition in the if
statement is satisfied (the integer i
is correctly assigned). However I can't see how I check whether the rest of the argument is satisfied as well (string text
).
you need to do this manually.
Example if you want to fail only if user inputs "123 foo"
int main ()
{
int i;
char s[100];
if (scanf ("%d %99s", &i, s) == 2 && !strcmp(s, "foo") && i == 123)
{
return 1;
}
return 0;
}