@EmachinesDIMA
junior DevOps

Как работает scanf в плюсах?

как работает scanf в плюсах?

мне надо в цикле на каждой итерации запрашивать ввод строки.
cin » s1
позволяет это сделать, а
scanf("%255[^\n]", s1)
только 1 раз.

К тому же, cin "cъедает" все что после пробела.
  • Вопрос задан
  • 375 просмотров
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
мне надо в цикле на каждой итерации запрашивать ввод строки.
cin » s1
позволяет это сделать, а
scanf("%255[^\n]", s1)
только 1 раз.

А вот такой scanf -- позволяет это сделать сколько угодно раз:
scanf("%255[^\n]\n", s1);
А вот такой позволяет ввести строку заранее неизвестной длины:
char *p;
scanf("%m[^\n]\n", &p);
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
1. Для ввода строки использовать std::getline.
2. Ну, в Си++ есть хорошо инкапсулированные строки, а в Си нет. Потому в Си очень сложно получить из потока строку неизвестной длины.
Ответ написан
@rPman
char buf[256];
fscanf(stdin,"%255[\n]",buf);

язык разметки в scanf необычный но позволяет очень быстро парсить строки (например простые csv без экранированных ковычек и разделителей в строках, содержащих например числа).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы