Чтобы получить строку пользовательского ввода, используйте fgets()
.
#define S_MAX_LENGTH
char s[S_MAX_LENGTH + 2];
if (fgets(s, sizeof s, stdin)) {
s[strcspn(s, "\n")] = '\0'; // Should code want to lop off a potential trailing \n
....
Не используйте scanf("%[^\n]s", s);
и gets(s);
. Они страдают от переполнения буфера и других проблем.