Как читать из ввода, пока не будет найдена новая строка с помощью scanf ()?

Меня попросили выполнить работу на C, когда я должен был читать из ввода, пока не появится пробел, а затем, пока пользователь не нажмет клавишу ввода. Если я сделаю это :

scanf("%2000s %2000s", a, b);

Он будет следовать первому правилу, но не второму.
Если я напишу:

I am smart

То, что я получу, эквивалентно:
a = "I";
b = "am";
Но это должно быть:
a = "I";
b = "am smart";

Я уже пробовал:

scanf("%2000s %2000[^\n]\n", a, b);

и

scanf("%2000s %2000[^\0]\0", a, b);

В первом он ждет, пока пользователь нажмет Ctrl + D (для отправки EOF), и это не то, что я хочу. Во втором он не компилируется. Согласно компилятору:

предупреждение: нет закрытия ‘]’ для ‘% [’ format

Есть ли хороший способ решить эту проблему?

18
задан Mateusz Piotrowski 12 February 2016 в 01:50
поделиться