What is the difference between both? I tried the standard input and output program using both and only found one difference. Using getchar ctrl+D was the end of file but using scanf ctrl+D did not work. So other than this is there any difference. Also I read there are others like getc etc. What are they used for? If they all take input from user and do the same job why are there so many functions for the same thing?