I\'m a novice learning C and trying to understand the following code from an online lecture. It scans a string for an integer; if characters are encountered, the sscanf fail
Your sscanf(string, " %d %c") will return EOF, 0,1 or 2:
2: If your input matches the following
[Optional spaces][decimal digits*][Optional spaces][any character][extra ignored]
1: If your input failed above but matched the following
[Optional spaces][decimal digits*][Optional spaces][no more data]
[Correction]
0:  If your input, after white-space and an optional sign, did not find a digit: examples: "z" or "-".
EOF: If input was empty "" or only white-space.
+ or -.You can always check what a function returns by putting it in a printf statement like below :
printf("%d",sscanf(string, " %d %c", &n, &c));
This will probably clear your doubt by printing out the return value of sscanf on your terminal.
Also you can check this out : cplusplus : sscanf
Hope that helped :)
In case sscanf has successfully read %d and nothing else, it would return 1 (one parameter has been assigned). If there were characters before a number, it would return 0 (no paramters were assigned since it was required to find an integer first which was not present). If there was an integer with additional characters, it would return 2 as it was able to assign both parameters.