Comment prévenir scanf causant un débordement de mémoire tampon dans C?

J'utilise ce code:

while ( scanf("%s", buf) == 1 ){

Quelle serait la meilleure façon de prévenir un éventuel débordement de la mémoire tampon, de sorte qu'il peut être passé des chaînes de longueurs irrégulières?

Je sais que je peux limite de la chaîne d'entrée en appelant par exemple:

while ( scanf("%20s", buf) == 1 ){

Mais je préfère être en mesure de traiter ce que les entrées de l'utilisateur.
Ou peut-il pas être fait en toute sécurité à l'aide de scanf et que je devrais utiliser fgets?

InformationsquelleAutor goe | 2009-10-25