Skip to content
Related Articles

Related Articles

Taking String input with space in C (3 Different Methods)
  • Difficulty Level : Easy
  • Last Updated : 28 Sep, 2018

We can take string input in C using scanf(“%s”, str). But, it accepts string only until it finds first space.

There are 3 method by which C program accepts string with space in the form of user input.

Let we have a character array (string) named as str[]. So, we have declared a variable as char str[20]

Method 1 : Using gets

Syntax : char *gets(char *str)






#include <stdio.h>
int main()
{
   char str[20];
   gets(str);
   printf("%s", str);
   return 0;
}

Note : gets() has been removed from c11. So it might give you a warning when implemented.
We see here that it doesn’t bothers about size of array. So, there is chance of Buffer Overflow.

 

Method 2 : To overcome above limitation, we can use fgets as :

Syntax : char *fgets(char *str, int size, FILE *stream)

Example : fgets(str, 20, stdin); as here, 20 is MAX_LIMIT according to declaration.




#include <stdio.h>
#define MAX_LIMIT 20
int main()
{
   char str[MAX_LIMIT];
   fgets(str, MAX_LIMIT, stdin);
   printf("%s", str);
  
   return 0;
}

 

Method 3 : Using %[^\n]%*c inside scanf

Example : scanf(“%[^\n]%*c”, str);




#include <stdio.h>
int main()
{
   char str[20];
   scanf("%[^\n]%*c", str);
   printf("%s", str);
  
   return 0;
}

Explanation : Here, [] is the scanset character. ^\n tells to take input until newline doesn’t get encountered. Then, with this %*c, it reads newline character and here used * indicates that this newline character is discarded.

This article is contributed by Aditya Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.
My Personal Notes arrow_drop_up
Recommended Articles
Page :