Чтение строк, разделённых пробелами, через scanf - C (СИ)

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

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

В ходе решения задачи возникла проблема: нужно считывать строки, разделённые пробелами (как количество, так и их длина неизвестны, между строками может быть любое число пробелов). Конец ввода - '\n'. При этом, если читать через scanf, то он работает бесконечно, т. к. трактует '\n' как разделитель. while (scanf("%s", st)) { Нужно, чтобы при конце строки он останавливался. Можно ли это как-то исправить без замены scanf на getchar?

Решение задачи: «Чтение строк, разделённых пробелами, через scanf»

textual
Листинг программы
char c;
char s[100];
do
{
    scanf("%s%c", st,&c);
 ...
}while(c!='\n');

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

  1. Объявлены две переменные: char c; char s[100];
  2. Затем выполняется цикл do-while, который будет выполняться до тех пор, пока значение переменной c не станет равно символу новой строки ('\n').
  3. Внутри цикла выполняется функция scanf, которая считывает в стек символов строку, разделённую пробелами (%s) и символ новой строки или возврата каретки (\n%).
  4. В качестве первого аргумента функции scanf используется указатель на первый символ строки (st).
  5. В качестве второго аргумента функции scanf используется адрес переменной c, чтобы считываемый символ новой строки мог быть записан в эту переменную.
  6. После выполнения функции scanf в переменной s будет содержаться строка, разделённая пробелами, а в переменной c будет содержаться символ новой строки.
  7. Далее в коде могут использоваться значения переменных s и c для решения различных задач.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

12   голосов , оценка 4.25 из 5
Похожие ответы