C fputs() and fgets() Function

3 Dec 2025 | 6 min read

In the C programming language, working with strings and files is a very important task to perform several operations. The fputs() and fgets() are two main standard library functions that are used to write and read a string from a stream. In this article, we will discuss the fputs() and fgets() functions in C with their syntax, examples, and features.

fputs() Function

In the C programming language, the fputs() function is used to write a line of characters into a file. It outputs a string to a stream. It writes all characters from the string until the terminating null character in the program. It is also used to store the text in the files or send the output to a specific stream.

Syntax:

It has the following syntax:

In this syntax,

  • S: It represents the string that has to be written.
  • *stream: It is used to represent the file pointer.

Simple C fputs() Function Example

Let us take an example to demonstrate the fputs() function in C.

Output:

Hello! This is a C Programming Language

Explanation:

In this given example, we have opened a file named myfile2.txt in write mode using the fopen() function. If the file cannot be opened, it shows an error message and stops the program execution. After that, we use the fputs() function to write a string into the file, and then use the fclose() function to close the file, which ensures that the data is properly saved.

Features of the fputs() Functions in C

There are several features of the fputs() Function in the C programming language. Some of them are as follows:

  • The fputs() function in C is commonly used to write a line of characters into a file.
  • This function is commonly utilized to write a complete null-terminated string to the specified file or stream.
  • It can be utilized in the stdout and stderr. It can also be used to open any file using the fopen() function.
  • It can help to find errors, such as write issues or invalid file pointers.
  • It is very helpful to write logs, messages, and text files.

Reading File: fgets() Function

In the C programming language, the fgets() function is commonly used to read a line or a fixed number of characters from the file. It enables us to read characters until a newline (\n) is found, the end of file is reached, or the specified limit is met. The fgets() function can also be utilized to store the result in a character array and always include a null terminator (\0), which makes it safe and secure for handling strings.

Syntax:

It has the following syntax:

  • s: It represents the character array where the read string will be stored.
  • n: It is used to represent the maximum number of characters to read.
  • *stream: It is used to represent the file pointer.

Simple C fgets() Function Example

Here, we are going to demonstrate the fgets() function in the C programming language.

Output:

Hello! This is a C Programming Language

Explanation:

In this given example, we have opened the file myfile2.txt in read mode and checked whether it was opened successfully or not. After that, we use the fgets() function to read a line of text from the file into a character buffer. If the read operation operates successfully, it displays the retrieved line on the screen. At the end, it closes the file to release system resources.

Features of the fgets() Functions in C

There are several features of the fgets() Function in the C programming language. Some of them are as follows:

  • The fgets() function in C is commonly used to read a line or a fixed number of characters from a file.
  • This function can stop reading when we encounter a newline, hit EOF (end-of-file), reach the specified length, and many others.
  • It helps to ensure that the string is completely terminated with the '\0'.
  • It helps to store spaces, punctuation, tabs intact, and many others.
  • It can be used to read configuration files, text processing, file parsing, and many more.

Conclusion

In conclusion, the fputs() and fgets() functions in C provide a safe, reliable, and efficient method to perform string-based file handling. The fputs() function enables us to write complete strings to a file or output stream without formatting. On the other hand, the fgets() function enables secure and controlled reading of text by preventing buffer overflows and storing spaces and special characters. Overall, both functions create an effective pair to handle text data, which makes them suitable for file processing, logging, and user input operations in modern C programming.

C fputs and fgets() function FAQs

1) Does the fgets() method automatically add a newline character in C?

No, the fgets() method does not add a newline character automatically. It copies characters from the input stream, and if a newline character, i.e., '\n' is present in the input before the character limit is reached, it includes that newline in the copied string and then includes a null terminator, i.e., '\0'.

2) Does the fputs() method write the null character in C?

No, the 'fputs()' method does not write the null character; instead, it stops writing characters when it encounters the null character, i.e., '\0'  in the input string. The null character itself is not written to the output stream.

3) How do fputs() and fgets() differ from puts() and gets() in C?

Let us compare the following points:

a. Fputs() vs. puts()

The fputs() function requires a file pointer argument that allows output to any stream, whereas the puts() method only writes to the standard output, i.e., 'stdout'. The fputs() method writes exactly the string provided and does not automatically append a newline character, i.e., '\n', whereas the puts() method automatically appends a newline character to the end of the output.

b. Fgets() vs gets()

The fgets () method is considered much safer than the gets() method because it takes a size argument 'n', which prevents buffer overflows by limiting the number of characters read, whereas the gets() method has no way to prevent buffer overflow, and is deprecated or considered dangerous.

4) Can we use the fgets() and fputs() methods for standard input/output (console I/O) in C?

Yes, we can use the 'fgets()' and 'fputs()' methods for standard input/output (console I/O). The FILE *stream argument can be a file pointer, which is obtained via the 'fopen()' or one of the predefined standard streams. The 'stdin' is used with the fgets() method to read from the keyboard, whereas the 'stdout' is used with the 'fputs()' method to write to the console.

5) Are there more efficient string I/O functions in C?

The fgets() and fputs() are generally recommended, safe functions for the line-oriented text I/O. They use internal buffering provided by the standard I/o library, which is 'stdio', that minimizes the number of slow system calls to the operating system. For basic string I/O, we do not generally need to look for anything more efficient unless we have highly specialized, performance-critical needs.


Next TopicC fseek()