×

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

Booleans in C

Introduction to Boolean With all the complexities of programming, it can take time to understand the basics. One concept, in particular, that confuses many beginners is the use of Booleans in...

6 minutes read.

How to install a C compiler in windows 10-64bit

Many C compilers can be installed on your pc. The most downloaded compilers include GCC, Turbo C++, Visual Studio, etc. This article includes the installation of the Turbo C++ compiler in...

6 minutes read.

LCM of two numbers in C

LCM is a mathematical term which stands for Least Common Multiple. LCM of any two numbers is the smallest positive value(number) which is evenly divisible by the two given numbers. Consider...

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.

Volatile in C

Introduction A volatile keyword is a qualifier in C. Qualifiers are nothing but keywords which are used to modify the properties of a variable. Qualifiers are of two types: 1) Const The const type...

3 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.

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.

While-Loop in C

Syntax of While Loop The syntax that has been used for the while loop in C programming language is: while (termination condition) {   // the body of the loop  } Working of While-Loop Initially, we...

3 minutes read.

Fahrenheit to Celsius in C

Before going into conversion, we have to know what Fahrenheit and Celsius mean, these are both units to measure the temperature.In our daily life, we use both Fahrenheit and Celsius,...

1 minute read.

Types of Function in C

A function is a piece of code that accomplish a certain operation for a specific task. There are two types of functions in C: System-defined function (Library Function)User-defined function 1. System defined Function...

8 minutes read.

Exponential() in C

Introduction: In C language, there are available many types of functions. The exponential() function is one of them. It is a mathematical function. This article describes using the pow() property to...

3 minutes read.

Stack implementation in C

Stack implementation in C Stack stores the data in a particular order. It is a linear data structure that follows the principle of the Last In First Out (LIFO) technique where...

3 minutes read.

What is 2s Complement in C?

The complement of 2s in C is generated from the 1s in C. As we know, the 1s complement of a binary number is generated by converting bit 1 to...

4 minutes read.

Find occurrence of substring in C using function

Introduction: In this article, we discuss finding the occurrence of a substring in C using function. This software takes strings and substrings as input and counts the occurrences of substrings within...

3 minutes read.

7 Best IDEs for C/C++ Developers in 2024

As we all know that in programming languages, C is known as the building block which cannot be contradicted, and C++ is the prolong kind of C and it can...

4 minutes read.

Calloc in C

The calloc() is a library function in C which is used for memory allocation. The calloc() function dynamically allocates multiple blocks of memory to complex data structures. This includes data structures...

3 minutes read.

C Array

An array is a collection of elements that are used to hold the fixed number of values of the same type. We cannot change the size and type of array...

2 minutes read.

Attributes in C

Attributes are one of modern C++ key features. It is the process by which initiator can add more information to the language instead of introducing new keywords for every attribute....

4 minutes read.

Free() Function in C

Free() function is a built-in function which is define in the stdlib.h header file. If we want to use this function in our program, we must include the stdlib.h header...

4 minutes read.

Inline Function in C

Inline Function in C A normal function will become an inline function when the function prototype of that function is prepended with the keyword "inline". Inline functions are the function where...

4 minutes read.