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() 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);
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);
printf ( "You entered (scanf): %s\n" , str);
return 0;
}
|
Contact Us