2017-10-18 3 views
0

scanf 함수에서 읽은 입력의 개수를 올바르게 표시하려면 어떻게해야합니까? 당신은 당신의 코드에서 scanf 두 통화를scanf에서 읽은 입력의 유효성을 올바르게 확인하는 방법

#include <stdio.h> 

int main() 
{ 
float numberOne; 
float numberTwo; 

scanf("%f %f", &numberOne, &numberTwo); 
float result = numberOne + numberTwo; 

int howManyRead = scanf("%f %f", &numberOne, &numberTwo); 

if (howManyRead == 2) 
{ 
    printf("%f", &result); 
} 
else 
{ 
    printf("invalid input"); 
} 
sleep(10); 

} 
+0

https://stackoverflow.com/questions/10469643/value-returned-by-scanf-function-in-c를이 도움이 수 있기를 바랍니다. – Mare70

+2

scanf를 두 번 호출 하시겠습니까? – user2867342

+0

"내 scanf 함수에서 읽은 입력 수는 얼마입니까?" -> 사용자가 입력이 완료되었음을 어떻게 나타낼까요? 텍스트를 입력 한 다음 '\ n'을 입력 하시겠습니까? ''123 \ n "'보고서 만 1 개의 숫자를 입력했거나'"456 \ n "'과 같은 다음 입력 줄을 기다려야합니까? – chux

답변

1

: 나는 결과를 표시하지 않습니다 아래의 코드를 실행하면 내가 scanf와 또는 다른 이유로 여기 읽기 2 개 입력을 해달라고하기 때문에,이 것은 내 코드입니다 . 첫 번째 호출의 결과는 무시되고 두 번째 호출의 결과는 검사됩니다.

두 개의 숫자를 입력하면 첫 번째 scanf은 코드를 무시하고 2를 반환합니다. 그 후 두 번째 scanf에 대한 호출은 두 개의 추가 번호를 읽으려고 시도합니다.

당신은 scanf에 첫 번째 통화를 제거하여이 문제를 해결할 수 있습니다 : 당신이 예상 방법으로 scanf()의 반환 값을 사용하지 않는

float numberOne, numberTwo; 
if (scanf("%f %f", &numberOne, &numberTwo) == 2) { 
    float result = numberOne + numberTwo; 
    printf("%f", result); 
} else { 
    printf("invalid input"); 
} 
-1

. 스캔의 성공/실패를 식별하고이를 기반으로 한 결정을 내리는 것이 있습니다.

세 가지 사항이 있습니다. 당신이 대상 변수를 사용하려고하면 체크하지 않고,이 값이 scanf()이 실패 할 경우에 확정 될 수 있기 때문

  • 이이 두 줄

    scanf("%f %f", &numberOne, &numberTwo); 
    float result = numberOne + numberTwo; 
    

    를 제거합니다. 또한, 틀림없이 필요하지 않은 반복 된 메시지가 반복됩니다.

  • 조건 블록 if (howManyRead == 2) 안에 float result = numberOne + numberTwo; 줄을 추가하십시오.

  • printf 통화에서 &을 제거 printf("%f", result);

+0

감사합니다 @melpomene, 그 3 점을 만들어, 이미 업데이 트되었습니다. :) –

+0

downvote 이유는 무엇입니까? –

관련 문제