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.