If the code is
scanf("%s\n",message)
vs
gets(message)
what's the difference?It seems that both of them get input to message.
gets() function in C gets() is a pre-defined function in C which is used to read a string or a text line. And store the input in a well-defined string variable. The function terminates its reading session as soon as it encounters a newline character. Compare the output with the one while using scanf() .
First of all, “gets” is a C library function that reads a line from stdin (standard input) and stores it in the pointed string. In contrast, “puts” is a C library function that writes a string to stdout or standard output. Thus, this is the basic difference between gets and puts in C Language.
We can add a getchar() after scanf() to read an extra newline.
Definition. scanf is a C function to read input from the standard input until encountering whitespace, newline or EOF while getchar is a C function to read a character only from the standard input stream(stdin), which is the keyboard. Thus, this is the main difference between scanf and getchar.
The basic difference [in reference to your particular scenario],
scanf()
ends taking input upon encountering a whitespace
, newline
or EOF
gets()
considers a whitespace as a part of the input string and ends the input upon encountering newline
or EOF
.
However, to avoid buffer overflow errors and to avoid security risks, its safer to use fgets()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With