Pages

Sunday 14 September 2014

`gets' function is dangerous how to solve this error and why gets function is dangerous?

  `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);
}

1 comments: