Очистка scanf от "\n" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
 
int main(void)
{
char s[20];
scanf("%[^\n]s", &s);
printf("%s\n", s);
scanf("%[^\n]s", &s);
printf("%s\n", s);
return 0;
}
можете объяснить почему когда я ввожу в консоли Hi Russia вывод такой: Hi Hi ? вообще я пытаюсь считывать сканф строки с пробелами, зачем - другой вопрос. Но не пойму почему второй сканф тут не срабатывает. Может жестко туплю конечно)))

Решение задачи: «Очистка scanf от "\n"»

textual
Листинг программы
    char s[20];
 
    scanf("%[^\n]s", s);
    printf("%s\n", s);
    getchar();
    scanf("%[^\n]s", s);
    printf("%s\n", s);

Объяснение кода листинга программы

  1. Объявлена переменная s типа char с размером 20 символов
  2. Происходит чтение строки с помощью scanf и передача её в s с использованием формата %[^\n]s
  3. Выводится содержимое переменной s с помощью printf
  4. Происходит считывание символа новой строки с помощью getchar
  5. Чтение строки с помощью scanf и передача её в s с использованием формата %[^\n]s
  6. Выводится содержимое переменной s с помощью printf

Оцени полезность:

14   голосов , оценка 4.071 из 5