저는 C의 기초를 배우고 간단한 1 차 방정식 솔버를 작성하고 있습니다. 입력이 정확히 ax + b = c 또는 ax-b = c이고, 여기서 a, b, c는 double 유형입니다. scanf()를 사용하여 사용자 입력을 읽고 올바른 형식인지 확인합니다. 그러나, 네거티브 더블을 입력하면 방정식의 "a"로 -4.6이 표시되고 scanf()
은 a, b, c를 올바르게 읽지 않습니다. 내 안에 % lf을 (를) 사용하고 있습니다. scanf()
. 그렇다면 네거티브 더블을 어떻게 읽어야합니까? 많은 감사합니다.C에서 scanf()를 사용하여 네거티브 double을 읽는 방법?
내 코드 : 그것이 잘못 때 어디서 얻었
#include <stdio.h>
int main(void)
{
double a,b,c,x;
printf("Enter the expression:\n");
if (scanf("%lfx%lf=%lf", &a, &b, &c) == 3)
{
x = (c - b)/a;
printf("x=%.2f\n", x);
}
else if (scanf("%lfx+%lf=%lf", &a, &b, &c) == 3)
{
x = (c - b)/a;
printf("x=%.2f\n", x);
}
else
printf("Invalid expression\n");
return 0;
} (대신 fgets()
및 sscanf()
, 말,의) 직접 scanf()
를 사용에 어려움
코드를 게시하십시오. 'scanf'는'-4.6'을 잘 읽어야합니다. – IVlad
필수 :'scanf'를 사용하지 마십시오. 대신'fgets'와'sscanf'를 사용하십시오. http://c-faq.com/stdio/scanfprobs.html – jamesdlin
내가 게시 한 코드가 GCC 컴파일러에서 예상대로 작동합니다. 어떤 컴파일러를 사용하고 있습니까? 문제를 나타내는 전체 코드를 게시 할 수 있습니까? 프로그램의 다른 위치에서 변수를 수정 중일 수 있습니다. – IVlad