2013-11-01 2 views
0

학교의 경우 브리지 저항이있는 브리지 회로의 전압과 전류를 계산하는 프로그램을 작성했습니다.입력 유효성 확인 (복수 값 사용)

내 문제는 사용자가 모든 저항을 CSV (R1, R2, R3 ...)로 입력하게하려는 것입니다. float 또는 정수만 입력했는지 확인하기 위해 사용자 입력의 유효성을 검사하고 싶습니다. 입력이 유효하지 않은 경우

나는 값을 다시 입력하도록 사용자에게 강제로 검증이 DO-while 루프를 썼다 :

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; 

편집

이 코드 단지 사용자가 문자 또는 잘못된 인수 수를 입력하면 "오류"가 throw됩니다 (예 : 12, 12, [ENTER]). 사용자 입력의 유효성을 검사하는 가장 좋은 방법은 무엇입니까?

+1

구체적인 질문은 무엇입니까? – BlackVegetable

+0

OP, 한번 테스트 해봤습니까? * once *? – Duck

+0

예, 게시물이 편집 됨 – Genmais

답변

0

안전한 입력을 얻으려면 가장 좋은 방법은 fgets을 사용하고 전체 입력을 문자열로 읽는 것입니다. 그런 다음 문자열이 정상적인 지 확인한 다음 개별 숫자를 구문 분석 할 수 있습니다 (예 : sscanf).

fflush(stdin);은 정의되지 않은 동작이므로 함수는 출력 스트림에 대해서만 잘 정의되어 있습니다. 따라서이 줄은 프로그램이 충돌하거나 화상을 입거나 예상대로 작동하지 않게 만듭니다. getchar() 대신 read this을 사용하여 줄 바꿈 문자를 표준 입력에서 멀리 비 웁니다.