×

fgets() function in C

fgets() function is present in standard input and output library i.e, stdio.h library. It is a built-in function or pre-define function. It is used to read the specified stream from the user and store it in a string.

The function reads the string until the new-line character is entered or end of the file is reached, or the input reaches the given length of the string. In this function, we fix the string size before the execution of the code.

Syntax for fgets() function :

char *fgets( char *str, int n, FILE *stream);

return type is char so it return a string.

Parameters passed:

  1. str is used to store the array string.
  2. n is the size of the string.
  3. stream is the name of the file or stdin.

We use the file name as the parameter if we want to work on files.

If we don't want to work on files, then we pass the parameter as stdin.

Example on fgets() function:

// program to read a string using fgets() function.

#include <stdio.h>
#include <string.h>
#define max 50 // defining the size of the array string
int main ()  // main function
{
   char s[max]; // string declaration.
   printf("Enter a string : ");
    // Reading the string
  fgets(s,max,stdin); // function calling 
   // printing the string.
   printf(" \nThe entered string is= %s", s);
   return(0);
}

Output:

Enter a string: Hello, Welcome to JavaTpoint tutorials
The entered string is= Hello, Welcome to JavaTpoint tutorials

Let us try another test case.

In this test case, we are checking what happens if the string size exceeds the given length.

Output:

Enter a string : Test case 2 Hello, Welcome to JavaTpoint tutorials and Examples
The entered string is= Test case 2 Hello, Welcome to JavaTpoint tutorials 

In this test case, we gave the input as Test case 2 Hello, Welcome to JavaTpoint tutorials and Examples, but in output, we got only Test case 2 Hello, Welcome to JavaTpoint tutorials because the fgets function reads only till up to tutorials because it has reached the given string size.

Advantages of fgets() function:

  1. There is no chance of getting the buffer overflow error.
  2. We can expect at least one output from fgets() function.
  3. fgets() function is safe to use.
  4. It checks the array bound of the input string.
  5. fgets() function reads the input character until the new line character is entered or size of the string is reached, or it reaches the end of the file

Difference between scanf() function and fgets() function:

By using scanf() function, we can read all data type values i.e. int, char, float and double. But while reading strings, it falls behind compared to fgets. The string contains spaces between the words.

The scanf() function reads till the first space fails to read after the space. At the same time, fgets() function is used to read the user input. By using fgets() function, we can read all data types, i.e. int, char, float and double. We can easily read the string using the fgets() function.

Example program to show scanf() vs  fgets() function:

// program for string using scanf() function 

// program for string using scanf() function  
#include <stdio.h>
#define max 100
int main() {
    int n; // string size declaration
    char string1[max]; // string  declaration
    printf(" Enter the size of the string: ");
    scanf("%d", &n); // string size
    // reading the string using scanf function
    printf(" \nEnter the string1: ");
    scanf("%s",string1);
    printf(" \nThe string entered using scanf() function= %s", string1);
    return 0;
}

Output:

Enter the size of the string: 60
Enter the string1: Hello, Welcome to JavaTpoint tutorials and Examples
The string entered using fgets() function= Hello,

If we observe the console output screen, we can see that the input string is Hello, Welcome to JavaTpoint tutorials and Examples, but in the output, we got only Hello, because by using the scanf() function, we can read up to the space after that scanf() is not reading the characters.

While in the fgets() function, we can read the space character.

Example program to show usage of fgets() function on files.

// program on files using  fgets() function
#include <stdio.h>
#define max 100
int main () {
   FILE *j; // Existing the file name
   char string1[max]; // string declaration
    // opening the file write mode
   j = fopen("file.txt" , "r"); 
   if(j == NULL) // checking the existence of the file
   {
      perror("Error in opening the file "); // displaying the error message
      return(-1);
   }
If(j!=NULL)
{
	printf(“ \nEnter the string: ”);
}
// Reading the string using fgets() function
   if( fgets (string1, max, j)!=NULL ) // function call
   {
      printf("\nThe entered string is= %s", string1); // printing the string
   }
   fclose(j); // closing the file
   return(0);
}

For this program, we have two cases

  1. If the input file does not exist in the directories.
  2. If the input file exist in the directories.

Let’s see the output of the two cases:

Test case 1: If file does not exist in the dictionary:

Output:

Error in opening the file: No such file or directories

Test case 2: If the file exists in the directories

Output:

Enter the string: Hello, Welcome to JavaTpoint tutorials and Examples
The entered string: Hello, Welcome to JavaTpoint tutorials and Examples

Conclusion:

In this article we learned the definition of fgets() function, working of the fgets() function, advantages of the fgets() function, examples on the fgets() function, difference between the scanf() function and fgets() function and usage of the fgets() function on files.


Related Topics

C Program of Fencing the Ground

The college's ground is rectangular. Fencing the ground the management makes the decision to construct a fence around the ground. They planned to wrap a thick rope around the ground...

1 minute read.

String Handling functions in C

String :- The String is the collection of characters. Every String ends with the null character, and the String is enclosed in the double quotations .ie, "javaTpoint". If we see any...

5 minutes read.

Commenting in C

Commenting in C Commenting in the C language is used to give out the information about the lines of the code which are included. It is one of the things that...

3 minutes read.

Palindrome Number in C

What is a Palindrome? A number that doesn't change when reversed is known as a palindrome. We reverse a number and compare it to the original number to determine whether it is...

4 minutes read.

Pi() Function in C

Pi: Mathematic constants are not defined in the c or c++ programming languages. To use the Mathematical constants firstly, we have to define the _USE_MATH_DEFINES and then declare the cmath and...

3 minutes read.

Macros in C

In the C programming language, the macro is defined as a segment of the code replaced by the macro defined value at the beginning. ‘#define’ is the directive that defines...

3 minutes read.

How to return a Pointer from a Function in C?

In the C programming language, pointers are variables that hold the address memory location of another variable. We could also input pointers to a function and return pointers from a...

3 minutes read.

Queue implementation in C

In the C programming language, the queue is the abstract concept that is similar to stacks. However, it is the part of the data structures that work opposite to that...

4 minutes read.

Data Structures And Algorithms in C

C language is one of the most flexible and simple languages. So, it is always better to learn any concept in C language compared to other languages. Let us look...

13 minutes read.

Prototype in C

A prototype is nothing but a model, a model of initial creation of an intended product. Similarly, in the C programming language, all functions have a prototype. In general, all...

4 minutes read.

2f in C language

Float data type in c: Double-precision floating-point numbers with up to 17 significant digits are stored in the FLOAT data type. FLOAT is equivalent to C's double data type and IEEE...

3 minutes read.

Difference between rand() and srand() function in C

What is the rand()?The rand() means random function. This function is used in C. It generates random numbers in the range of 0 to the RAND_MAX. Suppose we generate a...

3 minutes read.

Library Functions in C

What are library functions? Library functions are the built-in functions (functions provided by the system) which are stored in the library. The library is the common location where these functions are...

3 minutes read.

Use of free() function in C

Introduction The free() function uses in C programming language. The free() function in the C programming language uses to release or deallocate the memory blocks; these blocks are previously allocated by calloc(), malloc() or realloc()...

3 minutes read.

How to convert a number to words in C

There are many ways available for converting an integer or a number to its word form. For example, consider a number as 12345. This number can be represented in two...

3 minutes read.

10 Best IDEs for C or C++ Developers in 2024

Nobody can deny the fact that C and C++ were the first programming languages used by significant developers worldwide. Even now, newcomers who want to start programming are most frequently...

6 minutes read.

Static function in C

The functions in the C programming language are by default global. This means the programmer can easily access the function which is outside from the file where it was initially...

3 minutes read.

How to use atoi() function in C

Introduction: The atoi() is a function used in C programming language. This function converts string characters to the integer value. The atoi() function converts the input string to the return type of...

4 minutes read.

GCD program in C

C language : Dennis Ritchie developed the general-purpose computer language C at Bell Laboratories in 1972. Despite being an ancient language, it is extremely popular. It is among the most widely used...

4 minutes read.

Two-Dimensional array in C

What is an Array? The collection of a fixed number of elements of homogeneous data types that are stored in contiguous locations in the memory is known as an array. Only...

6 minutes read.