I understand what functions like setbuf do (set block buffering, line buffer, or no buffering). But what is the purpose for change the type of buffering used by a stream? Under what circumstances would you change the buffering type, and why?