Fgets Function in C

The fgets function is defined in the C standard library (stdio.h) and used to read up to n characters from a specified stream such as standard input stream or file stream) to a string pointed with str.

The C fgets function reads characters until it encounters an End-Of-File (EOF), a newline character, or when n-1 characters are read.

This quick tutorial will discuss how to use the fgets function in C programs.

Basic Usage

The general syntax for the C fgets function is as shown below:

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

The function accepts three parameters, namely:

  1. str – A Pointer to the array of characters where the reads string values are added.
  2. n – An integer value defining the maximum number of characters to be added to the str. The maximum number includes the null terminating character.
  3. stream – A pointer describing a file object to identify the input stream.

Fgets Return Values

On successful execution, the function will return str. If the function encounters an error, it returns a null pointer. Similarly, if the function terminates due to an EOF with no characters read, it returns a null pointer.

NOTE: Although a newline character will force the fgets function to stop, it is still included in the string copied as a valid character.

Fgets Function Example

Let us illustrate how to use the fgets function in C. Consider the example code shown below:

#include <stdio.h>

intmain() {
    FILE *fptr;
char str[100];

//    open file for read
fptr = fopen("fgets.txt", "r");
if (fptr == NULL) {
perror("[-] Error Encountered while opening file!");
return-1;
}
else {
if (fgets(str, 100, fptr) !=NULL){
puts(str);
   }
fclose(fptr);
}
return0;
}

In the example above, the fgets function will open the fgets.txt file, read the first 100-1 (99) characters, and print them on the screen.

If we assume the contents of the fgets.txt file are:

Hello world!, this is fgets function in C.

Compiling and executing the above code should print out the lines above.

HINT: Unlike the gets function, the fgets function is safer since it checks the array bounds, preventing a buffer overflow.

Conclusion

This short guide discussed how to use the fgets function in C language to read characters from a stream until specific conditions are met.

Happy C time!



from https://ift.tt/2WfHhrb

Post a Comment

0 Comments