what is the difference between scanf and gets functions in c?