How to limit scanf function in C to print error when input is too long?

前端 未结 6 990
梦谈多话
梦谈多话 2020-12-11 07:17

I want to limit the scanf function so when I enter for example a char* array that has more then 30 characters, it will not get it and my outpu

6条回答
  •  [愿得一人]
    2020-12-11 08:13

    If you must use scanf then I believe that the best that you can do is use the width specifier with something like: "%31s", as you've already mentioned, then use strlen to check the length of the input, and discard the string and report an error if the input is longer than your limit.

    Or possibly skip the strlen by additionally using an %n in your format string, e.g. "%31s%n".

    A format string using something like %[^\n] in place of %s simply instructs the function to continue reading until a newline, consuming other whitespace characters along the way. This is useful if you want to allow the input to include whitespace characters.

    Review the docs for scanf (here's a copy of the man page).

提交回复
热议问题