sscanf behaviour / return value

前端 未结 3 1907
眼角桃花
眼角桃花 2021-01-11 23:07

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

相关标签:
3条回答
  • 2021-01-11 23:44

    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.

    • The decimal digits may be preceded by a sign character + or -.
    0 讨论(0)
  • 2021-01-12 00:04

    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 :)

    0 讨论(0)
  • 2021-01-12 00:07

    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.

    0 讨论(0)
提交回复
热议问题