scanfは"%s"のようにサイズ指定せずに使うこともできますが,バッファオーバーランの危険性があるので出来るだけちゃんと書きましょう。 scanfの利用 scanfは多機能なので動作のカスタマイズが可能です。そのままの状態ではfgetsの劣化版のように見えてしまいますが,フォーマットをちゃんと書くことで実用性が向上します。 %sはすべての空白文字を無視します。これには半角スペースも含まれています。そこで,%sの代わりに%[^\n]と書くことで,無視する対象を改行だけに限定することができます。%255[^\n]は,改行以外を1〜255文字読み込むことを意味します。 %の代わりに%*を使うと,その部分を読み飛ばすことができます。1行に256文字以上入力されたとき,最初の255文字までを受け取って残りを捨てたい場合は,%255[^\n]%*[^\n]と書きます。 さらに次にscanfを使う場合
![標準入力から安全に文字列を受け取る方法いろいろ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f75e869f819803017df3badd1a194f4e843d0382/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU2JUE4JTk5JUU2JUJBJTk2JUU1JTg1JUE1JUU1JThBJTlCJUUzJTgxJThCJUUzJTgyJTg5JUU1JUFFJTg5JUU1JTg1JUE4JUUzJTgxJUFCJUU2JTk2JTg3JUU1JUFEJTk3JUU1JTg4JTk3JUUzJTgyJTkyJUU1JThGJTk3JUUzJTgxJTkxJUU1JThGJTk2JUUzJTgyJThCJUU2JTk2JUI5JUU2JUIzJTk1JUUzJTgxJTg0JUUzJTgyJThEJUUzJTgxJTg0JUUzJTgyJThEJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yMjgwMTNmYzc5NTUxZGFkNjExNzk5NTA3Nzc2OTcwOA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbXB5dyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZTcxMDU2ZjgzMjg0YmM3ZWY2NDM1OThkMjkyNmU4Yzg%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D932ceaa141c91f5c65a7ccdb30a0a06e)