Считать числа из файла - C (СИ)
Формулировка задачи:
В общем вопрос такой
Как вытащить числа из строки вида
x^2 + 56x - 68 = 0;
Мне нужно вытащить числа 2, 56 и 68
- Это не работает!
Как быть?
fscanf(input, "%i %i %i", &a, &b, &c);
Решение задачи: «Считать числа из файла»
textual
Листинг программы
#include <stdio.h> void flush_input(void) { char c; while ( scanf("%c", &c) == 1 && c != '\n' ) ; } int main(void) { int a, b, c; while ( printf("String: ") && scanf("%*[^0-9]%d%*[^0-9]%d%*[^0-9]%d", &a, &b, &c) == 3 ) { printf("A = %d; B = %d; C = %d\n", a, b, c); flush_input(); } return 0; }
Объяснение кода листинга программы
В этом коде:
- В функции
flush_input
используется циклwhile
, который будет выполняться до тех пор, покаscanf
успешно считывает символ из стандартного ввода (то есть пока пользователь вводит данные). Внутри циклаwhile
ничего не происходит, поэтому он просто пропускает все символы до новой строки или до ввода чисел. - В функции
main
объявлены три переменные типаint
-a
,b
иc
. - Используется цикл
while
, который будет выполняться до тех пор, покаprintf
успешно выводит строкуString:
иscanf
успешно считывает три числа (представляющих строку, число и второе число). - Внутри цикла
while
числа считываются в переменныеa
,b
иc
. - Затем числа выводятся на экран с помощью
printf
. - Функция
flush_input
вызывается для очистки буфера ввода. - Если цикл
while
завершается, программа возвращает0
, что означает успешное завершение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д