Qué tal así:
void bufflush(char *str) {
if(c)
*c = '\0';
else
}
Esta función se usa en conjunción con fgets aprovechando que esta también adquiere el retorno de carro.
Sí por límite de caracteres no ha conseguido de capturar todo desde el buffer, ésta función limpiará lo que ha sobrado incluso el carácter de nueva línea.
En cambio si se ha capturado, incluso el carácter de nueva línea, la función lo buscará y lo sustituirá por un carácter nulo (consiguiendo así que nuestra cadena no haga un cambio de línea no deseado cuando la representemos) y ya no esperara el carácter de nueva línea que no existe en el buffer.