Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

1 Answer
Nishtha Thakur

Let us see, what is the scanset in C. The scanset is basically a specifier supported by scanf family functions. It is represented by %[]. Inside scanset we can specify only one character or a set of characters (Case Sensitive). When the scanset is processed, the scanf() can process only those characters which are mentioned in the scanset.

Example

#include<stdio.h>
int main() {
   char str[50];
   printf("Enter something: ");
   scanf("%[A-Z]s", str);
   printf("Given String: %s", str);
}

Output

Enter something: HElloWorld
Given String: HE

It ignores the characters which are written in lowercase letters. The ‘W’ is also ignored because there are some lower case letters before it.

Now, if the scanset has ‘^’ in its first position, the specifier will stop reading after first occurrence of that character.

Example

#include<stdio.h>
int main() {
   char str[50];
   printf("Enter something: ");
   scanf("%[^r]s", str);
   printf("Given String: %s", str);
}

Output

Enter something: HelloWorld
Given String: HelloWo

Here the scanf() ignores the characters after getting the letter ‘r’. Using this feature, we can solve the problem that a scanf does not take strings with spaces. If we put %[^\n], then it will take all of the characters until it gets a new line character.

Example

#include<stdio.h>
int main() {
   char str[50];
   printf("Enter something: ");
   scanf("%[^\n]s", str);
   printf("Given String: %s", str);
}

Output

Enter something: Hello World. This line has some spaces.
Given String: Hello World. This line has some spaces.

Advertisements

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.