2013-11-01 3 views
0

В школе я написал программу для расчета напряжения и тока мостовой схемы с сопротивлением моста.Проверка ввода (с несколькими значениями)

Моя проблема заключается в том, что я хочу, чтобы пользователь вводил все сопротивления как CSV (R1, R2, R3 ...). Я хочу проверить вход пользователя, чтобы проверить, введен ли только поплавки или целые числа.

Я написал это делать-пока петля для проверки, чтобы заставить пользователя повторно ввести значения, если вход не действует:

int check = 1; 
do{ 
    if(check == 0){               
    check = 1; 
    puts("Re-Enter as the following: R1, R2, R3, R4, Rab"); 
    }//endif 
    check = scanf("%f, %f, %f, %f, %f", &fR1, &fR2, &fR3, &fR4, &fRab);   
    fflush(stdin); 
}while(check == 0); 
check = 1; 

EDIT

Этот код просто «выбрасывает» «ошибку», если пользователь вводит буквы или неправильное количество аргументов (например: 12, 12, [ENTER]). Каков наилучший способ проверки ввода пользователя?

+1

В чем конкретный вопрос? – BlackVegetable

+0

OP, вы даже проверили это ... как * один раз *? – Duck

+0

Да, сообщение редактируется – Genmais

ответ

0

Лучший способ получить безопасный ввод - использовать fgets и прочитать весь ввод в виде строки. Затем вы можете проверить, что строка правильная, и после этого вы можете разобрать отдельные номера (например, sscanf).

fflush(stdin); - неопределенное поведение, функция только четко определена для выходных потоков. Поэтому эта строка приводит к сбою, записи или, по-видимому, работе вашей программы, как ожидалось. Сбросьте символ подачи линии от stdin, используя вместо этого getchar(), read this.

Смежные вопросы