Я пытался использовать регулярные выражения в scanf, чтобы прочитать строку из максимум n символов и отбросить все остальное до символа новой строки. Любые пробелы следует рассматривать как обычные символы и включать их в читаемую строку. Я изучил статью в Википедии о регулярных выражениях, но не могу заставить scanf работать должным образом. Вот код, который я пробовал:
scanf("[ ]*%ns[ ]*[\n]", string);
[] должен указывать на фактический пробел, * должен означать один или несколько, n - количество символов для чтения, а строка - это указатель, выделенный с помощью malloc. Я пробовал несколько разных комбинаций; однако я стараюсь читать только первое слово предложения (останавливается на пробеле). Кроме того, * кажется, что отбрасывает символ вместо того, чтобы означать «ноль или более» ...
Может ли кто-нибудь подробно объяснить, как регулярные выражения интерпретируются scanf? Более того, эффективно ли вместо этого многократно использовать getc?
Заранее спасибо
fgets()
:fgets(string, sizeof string, stdin);
- person pmg   schedule 15.02.2013fgets()
потребляет все до (включительно) a'\n'
. - person pmg   schedule 15.02.2013