Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App

Related Articles

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

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article


  • 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 newline.


  • It is an edit conversion code.
  • The edit conversion code %[^\n] can be used as an alternative of 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 non-whitespace part.
  • It means they cannot be used for reading a text containing more than one word, especially with Whitespaces.

Table of difference and similarities between gets() and %[^\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
My Personal Notes arrow_drop_up
Last Updated : 21 Feb, 2023
Like Article
Save Article
Similar Reads