Если вы хотите читать в последовательности символов, не являющихся символом новой строки, %[^\n]
является правильным.
Спецификатор формата %[
для scanf
будет принимать любые следующие символы, пока ]
не станетвстречается.Если первый указанный символ ^
, то он принимает символы , а не в этом списке.Читаемые символы затем помещаются в заданный параметр char *
.
%[^\n]s
- это описанный выше спецификатор формата , за которым следует литерал 's'
.s
является , а не частью спецификатора формата %[
.Таким образом, он будет читать символы до тех пор, пока не встретит символ новой строки и не поместит эти символы в заданный char *
, затем попытается прочитать символ s
, который не найден, потому что следующий символ новой строки.