`gets' function is dangerous how to solve this error and why gets function is dangerous?
Never use gets(). Because it is impossible to tell without
knowing the data in advance how many characters gets() will
read, and because gets() will continue to store characters past
the end of the buffer, it is extremely dangerous to use.
It has been used to break computer security. Use fgets() instead.
so we can use fgets():
In the C Programming Language, the
fgets function reads characters from the stream pointed to by
stream.
The
fgets function will stop reading when
n-1 characters are read, the first new-line character is encountered in
s, or at the end-of-file, whichever comes first. Then the
fgets function will append a null character to the string.
Syntax
The syntax for the C Language
fgets function is:
char *fgets(char *s, int n, FILE *stream);
s is the array where the characters that are read will be stored.
n is the size of
s.
stream is the stream to read.
The
fgets function returns
s. The
fgets function
will return a null pointer if an error occurs while trying to read the
stream or the end of the stream is encountered before any characters are
stored.
In the C Language, the required header for the
fgets function is:
#include
#include
char * fgets(char *restrict s, int n, FILE *restrict stream);
Frightening, no? That’s because fgets() is a file function, which
reads text from a file, as in “file get string.” That’s how programmers
talk after an all-nighter.
Because the operating system considers standard input like a file, you can use fgets() to read text from the keyboard.
Here’s a simplified version of the fgets() function as it applies to reading text input:
fgets(string,size,stdin);
In this example,
string is the name of a char array, a string variable;
size is the amount of text to input plus
one,
which should be the same size as the char array; and stdin is the name
of the standard input device, as defined in the stdio.h header file.
THE FGETS() FUNCTION READS A STRING
#include
int main()
{
char name[10];
printf("Who are you? ");
fgets(name,10,stdin);
printf("Glad to meet you, %s.\n",name);
return(0);
}