title: Difference between scanf's width specification and scanf_s
body: <pre><code>scanf_s("%s", a, 10);
  </code></pre>
  
  <p>This code will protect our program from buffer overflow exploit.</p>
  
  <p>But <strong>without</strong> scanf_s, we can write:</p>
  
  <pre><code>scanf("%9s", a);
  </code></pre>
  
  <p>I think this code will also block buffer overflow. Is this true?</p>
  
  <p>So what is basically different between two ways?</p>
  
  <p>And if scanf's width specification is blocking buffer overflow, why do we call original scanf "unsafe"?</p>