Open In App

scanf(“%[^\n]s”, str) Vs gets(str) in C with Examples

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

gets()

  • gets is a more convenient method of reading a string of text containing whitespaces.
  • Unlike scanf(), it does not skip whitespaces.
  • It is used to read the input until it encounters a new line.

%[^\n]

  • It is an edit conversion code.
  • The edit conversion code %[^\n] can be used as an alternative to gets.
  • C supports this format specification with scanf() function.
  • This edit conversion code can be used to read a line containing characters like variables and even whitespaces.
  • In general scanf() function with format specification like %s and specification with the field width in the form of %ws can read-only strings till the non-whitespace part.
  • It means they cannot be used for reading a text containing more than one word, especially with Whitespaces.

Note: Both gets() & scanf() are does not perform bound checking.

Table of difference and similarities between gets() and %[^\n]

gets() %[^\n] 
gets() is used to read strings %[^\n] is an edit conversion code used to read strings
Unlike scanf(), gets() reads strings even with whitespaces %[^\n] also reads strings with whitespaces
when it reads a newline character then the gets() function will be terminated %[^\n] also terminates with a newline character

Example of gets()

C




#include <stdio.h>
  
int main() {
    char str[100];
     
    printf("Using gets:\n");
    printf("Enter a line of text: ");
    gets(str); // Reads a line of text, including white-space
    printf("You entered (gets): %s\n", str);
    return 0    
  }


Example of %[^\n]

C




#include <stdio.h>
  
int main() {
  
    char str[100];
    
    printf("Using scanf:\n");
    printf("Enter a line of text: ");
    scanf("%99[^\n]", str); // Reads a line of text, excluding white-space
    // %99 will stop buffer overflow
    printf("You entered (scanf): %s\n", str);
  
    return 0;
}




Last Updated : 08 Nov, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads