2014-09-16 5 views
1

실행하려고하는 계산기 응용 프로그램이 올바르게 실행되지 않습니다. 이상한 메시지 상자가 생깁니다 (아래 참조).C Visual Studio 2013에서 scanf_s 및 printf의 계산기 오류

error

#include <stdio.h> 

int main() 
{ 
int Pre; 
float v1; 
float v2; 
char op; 

printf("Enter precision: "); 
scanf_s("%f", &Pre); 

if (Pre < 0) 
{ 
    printf("Error: negative precision\n"); 
    return 0; 
} 

printf("Enter expression: "); 
scanf_s("%f %c %f", &v1, &op, &v2); 

if (op == '+') 
{ 
    printf("%f %c %f\n", v1, op, v2); 
    return 0; 
} 


return 0; 
} 

어떤 아이디어?

답변

1

scanf_s을 사용하여 데이터를 char * 또는 wchar_t *으로 읽을 때 입력을 받아들이는 버퍼의 크기를 지정해야합니다.

scanf_s("%f %c %f", &v1, &op, 1, &v2); 

출처 : MSDN on scanf_s.

(참고 :. scanf_s이 C.11 부속서 K.3.5.3.4에 설명 된 표준 C 라이브러리 옵션 확장)이 "%f" 밖으로


Matt 점이다 &Pre에 대한 잘못된 형식 지정자, Preint이므로 "%f"은 인수가 float에 대한 포인터가됨을 나타냅니다. 인수가 int에 대한 포인터임을 나타내려면 "%d"을 사용하십시오.

+0

감사합니다. 그게 문제를 해결했습니다! – ChristonianCoder

+1

또한, '% f'은 (는) 부동 소수점을 읽는 데 사용됩니다. 'scanf_s ("% f", & Pre)'는 작동하지 않을 것입니다. int에'% d'을 사용하십시오. –

+0

@MattMcNabb : 잘 잡으세요. – jxh