나는 switch case 문을 사용하여 프로그램을 작성하고 입력을 위해 문자를 요청했지만 콘솔 창에서 문자를 요청하지 않지만 완전히 건너 뜁니다
int main()
{
float a, b, ans;
char opr;
printf("\nGIVE THE VALUES OF THE TWO NUMBERS\n");
scanf(" %f %f",&a,&b);
printf("\nGIVE THE REQUIRED OPERATOR\n");
//no display(echo) on the screen
//opr = getch();
//displays on the screen
//opr = getche();
scanf("%c",&opr);
switch(opr)
{
case '+' :
ans = a+b;
printf("%f", ans);
break;
case '-' :
ans = a-b;
printf("%f", ans);
break;
case '*' :
ans = a*b;
printf("%f", ans);
break;
case '/' :
ans = a/b;
printf("%f", ans);
break;
case '%' :
ans = (int)a % (int)b;
printf("%f", ans);
break;
default :
printf("\nGIVE A VALID OPRATOR\n");
}
system("pause");
return 0;
하지만 %c
두 번째에 공백을 넣었을 때 scanf
누군가가 내가 혼란스러워하는 공백에 대해 뭔가를 말하고있었습니다.
그는 두 번째는 말했다 scanf
의 값을 취하고 \n
문자로 그리고 내가 전에 공백을 넣으면 %c
두 번째에 scanf
아니라고 캐릭터와는 문자로 공간을 차지하지 않는 이유는 무엇입니까?
하지만이 프로그램 \n
에서는 캐릭터를
int main()
{
char a;
printf("\ngive a char\n");
scanf("%c",&a);
printf("%c",a);
return 0;
}
이것은 정말 혼란 스럽습니다. 어떤 것이 잘못되었는지 배우고 싶습니다.
다음 형식으로 scanf를 사용할 때마다 :
scanf("%c",&a);
다음 반복에서 사용될 개행을 남깁니다. 당신이 언급 한 마지막 프로그램은 단지 하나의 "scanf"를 가지고 있습니다. 다른 scanf를 사용해보십시오. 같은 문제가 발생합니다.
따라서 공백을 피하려면 다음과 같이 작성해야합니다.
scanf(" %c",&opr);
형식 문자열 앞의 공백은 scanf에게 공백을 무시하도록 지시합니다. 또는 사용하는 것이 더 좋습니다
getchar();
모든 개행을 소비합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다