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