Считать числа из файла - 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, что означает успешное завершение.