• [๊ณ ๋ฏผ๊ฑฐ๋ฆฌ] C์–ธ์–ด ์ข€ ๋„์™€์ฃผ์„ธ์š”!!!2015.10.08 PM 02:36

๊ฒŒ์‹œ๋ฌผ ์ฃผ์†Œ FONT๊ธ€์ž ์ž‘๊ฒŒํ•˜๊ธฐ ๊ธ€์ž ํ‚ค์šฐ๊ธฐ





int main(void){

char oper;

for (int i = 1; i <= 10; i++){

printf(">>Enter one of the following operations (+,-,*,/,^,!):");
scanf_s("%c", &oper);

switch (oper){
case '+':
add();
break;
case '-':
subtraction();
break;
case '*':
multi();
break;
case '/':
division();
break;
case '^':
exponential();
break;
case '!':
facto();
break;
default:
printf(">>ERROR: You enterd wrong operator\n");
}
}

return 0;
}


================================================================

์—ฐ์‚ฐํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์ƒ๋žตํ–ˆ์–ด์š”..

1. ์™œ case๋กœ ์•ˆ๋“ค์–ด๊ฐ€๊ณ  default๋กœ ๋ฐ”๋กœ๊ฐ€์ฃ ..?ใ… ใ… 
2. default๋กœ ๋‚˜์˜จ๋‹ค์Œ์— for ๋ฐ˜๋ณตํ• ๋•Œ scanf๋ฅผ ํ•œ๋ฒˆ ๋ฌด์‹œํ•˜๊ณ  ์™œ ๋‘๋ฒˆ์งธ์— scanf๊ฐ€ ์ž‘๋™๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒŸ์–ด์š”
3. 1234567890 ์ž…๋ ฅํ•˜๋ฉด 1๋ฒˆ๋งŒ default๋กœ ์•ˆ๊ฐ€๊ณ  ์™œ 10๋ฒˆ ๋‹ค ์‹คํ–‰ ๋˜์–ด๋ฒ„๋ฆฌ๋Š”์ง€๋„ ๋ชจ๋ฅด๊ฒŸ์–ด์š”

๋„์™€์ฃผ์„ธ์šฉใ… ใ… 
๋Œ“๊ธ€ : 20 ๊ฐœ
int i ๋ฅผ ๋จผ์ € ์„ ์–ธํ•ด ์ฃผ์…”์•ผ ํ• ๊ฑฐ ๊ฐ™์€๋ฐ
์„ ์–ธ ์•ˆํ•˜๊ณ  ๋ฐ”๋กœ ์จ์„œ ๊ทธ๋Ÿฐ๊ฑฐ ์•„๋‹Œ๊ฐ€์š”
for์•ˆ์—์„œ i ์„ ์–ธํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค!
๊ทธ๊ฑฐ๊ฐ€ ์˜ํ–ฅ์ฃผ๋‚˜์š”? ํ•ด๋ณด๊ณ  ์˜ฌ๊ป˜์š”
์ค‘๊ฐ„์— ์ž…๋ ฅ๋ฐ›์€ oper๋ฅผ ์ถœ๋ ฅํ•˜๋„๋กํ•ด์„œ ๊ฐ’์„ ํ™•์ธํ•ด๋ณด์„ธ์š”
๋นˆ์นธ๋‚˜์˜ค๋„ค์š”.. ์™œ์ง€!?
switch ๋ฌธ์€ ์ •์ˆ˜๋งŒ ๋œ๋‹ค๊ณ  ๋“ค์—ˆ๋Š”๋ฐ ์•„๋‹Œ๊ฐ€์š”?
MSDN ์ฐพ์•„๋ณด๋‹ˆ char๋„ ๊ฐ€๋Šฅํ•˜๋„ค์š”..
  • Retaw
  • 2015/10/08 PM 03:05
char ๋„ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์ผ€์ด์Šค์•ˆ์— ์“ฐ์ง€ ๋ง๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ž์—ด ๋น„๊ตํ•  ๋•Œ ์“ธ๊นŒ๋ด ๊ทธ๋Ÿฌ๋Š” ๊ฑฐ์ฃ . ๋ฌธ์ž์—ด์€ ๋ฐฐ์—ด์ด๋‹ˆ ํฌ์ธํ„ฐ๋ฅผ ๋น„๊ตํ•˜๊ฒŒ ๋˜์„œ ์˜ค์ž‘๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
c์•ˆํ•œ์ง€ ๊ฝค ์˜ค๋ž˜๋˜์„œ ์• ๋งคํ•œ๋ฐ switch๋ฌธ์— char๋Œ€์‹  ์ •์ˆ˜ํ˜•์œผ๋กœ ํ•ด๋ณด์‹œ๊ตฌ์š” ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ๋”ฐ๋กœ ํ•˜์…”์•ผ ํ• ๋“ฏ์š”.
if else if๋ฌธ์œผ๋กœ ์งœ์…”๋ณด๋Š”๊ฒƒ๋„ ๋‚˜์˜์ง€ ์•Š์„๊บผ๊ฐ™๋„ค์š”
์Šค์บ”์—ํ”„๋Š” ์ž…๋ ฅ๊ฐ’ ๋ง๊ณ ๋„ ์—”ํ„ฐ๋„ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋กœ ์ธ์‹ํ•ด์„œ 2๋ฒˆ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ฃ 
1234567890์€ ๋ฒ„ํผ์— ์ฐŒ๊บผ๊ธฐ๊ฐ€ ๋‚จ์•„์„œ ๊ทธ๋Ÿด ๊ฒ๋‹ˆ๋‹ค
์ž…๋ ฅ๋ฐ›์€ ํ›„
fflush(stdin);๋‚˜ getchar();์„ ๋„ฃ์œผ์„ธ์š”
์•„๋งˆ 2๋ฒˆ๋„ ์žกํž ๊ฒƒ ๊ฐ™์€๋ฐ

์˜ค๋ž˜๋˜์„œ ๊ธฐ์–ต์ด ใ…Žใ…Ž
http://penji.tistory.com/archive/20090822
scanf_s("%c", &oper); ์—์„œ

for๋ฌธ์œผ๋กœ ๋ฐ˜๋ณต์„ ํ•˜๋Š” ์ƒํ™ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— + <enter>๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‘๊ฐœ์˜ ๋ฌธ์ž๋กœ ์ธ์‹์„ ํ•ด์š” .....
๊ทธ๋ž˜์„œ +์ผ๊ฒฝ์šฐ์™€ <enter>์ผ ๊ฒฝ์šฐ ๋‘๋ฒˆ ์‹คํ–‰์ด๋˜๊ณ  1234567890 <enter>๋ฅผ ๋ˆ„๋ฅด๋ฉด
1์ผ๊ฒฝ์šฐ 2 3 4 5 6 7 8 9 10 <enter> ๊นŒ์ง€ 11๋ฒˆ์ด ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๊ณ„์† ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰์ด ๋˜๋Š”๊ฑฐ์—์š”

conio.h๋ฅผ include ํ•˜๊ณ  getch() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธ€์ž ํ•˜๋‚˜๋ฉด ์ž…๋ ฅ ๋ฐ›๊ณ  <enter>์—†์ด ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋‹ˆ๊นŒ
์ฐธ๊ณ ํ•˜์„ธ์š”.
swich ๋ฌธ๊ตฌ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ์ง์ ‘ ๋„ฃ์–ด๋ณด์„ธ์š”

๊ทธ๋Ÿผ ๋ ๊บผ ๊ฐ™์€๋ฐ
scaf์—์„œ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’ + enter์˜ enter๊ฐ’์ด ํ•˜๋‚˜์˜ ๋ฌธ์ž๋กœ ์ธ์‹ํ•ด์„œ
๋’ค์—์žˆ๋Š” switch๋ฌธ์—์„œ ' '์„ ์ž…๋ ฅ๋ฐ›๊ณ  default๋กœ ๋‹ฌ๋ ค๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹น.
ํ—‰...์ €๋Š” ๊ต์–‘์ˆ˜์—… ์ˆ˜์ค€์ธ๋ฐ ์ฒ˜์Œ๋ณด๋Š” ๊ฒƒ๋“ค์ด ๋‚˜์™€์„œใ… ใ…  ์•„.. ๊ดœํžˆ switch๋กœ ํ•˜๋ ค๊ณ ํ–ˆ๋‚˜

์‹ ๊ฒฝ ์จ์ฃผ์‹ ๋ถ„๋“ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹คใ…Žใ…Ž
if๋กœ ํ•ด๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ๊ฒ๋‹ˆ๋‹ค
๋ฒ„ํผ์— ์—”ํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค fflush(stdin)์„ ์จ์ฃผ์„ธ์š”!
์œ—๋ถ„๋“ค์ด ๋‹ตํ•ด์ฃผ์…จ๋„ค์š”. ์ž…๋ ฅ๋ฐ›๋Š” ๋ถ€๋ถ„์—์„œ ์—”ํ„ฐ๊นŒ์ง€ ์ธ์‹ํ•ด์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค.
fflush ๋ผ๋Š” ํ•จ์ˆ˜๋Š” ๋ฒ„ํผ์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋“ค์„ ๋‚ ๋ฆฌ๋Š” ์—ญํ• ์„ํ•˜๋Š” ๊ทธ๋Ÿฐ ํ•จ์ˆ˜์ธ๋ฐ.. ๋˜๋„๋ก์ด๋ฉด ์ด๋Ÿฐ ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” OS ํ˜ธํ™˜์„ฑ์„ ์ƒ๊ฐํ•ด์„œ while (getchar() != '\n'); ์ด ์ฝ”๋“œ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ~

#include <stdio.h>

int main()
{
char oper;
int i;

for (i = 0; i < 10; i++)
{
printf(">>Enter one of the following operations (+,-,*,/,^,!): ");
scanf("%c", &oper);

while (getchar() != '\n');

switch (oper)
{
case '+':
printf("Add\n");
break;
case '-':
printf("Sub\n");
break;
case '/':
printf("Div\n");
break;
case '*':
printf("Mul\n");
break;
default:
printf("Nothing\n");
break;
}
}

return 0;
}

์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋˜๊ฒ ๋„ค์š”~
๋ฐ›์€ ๋ฌธ์ž์—ด์„ trimํ•ด์ฃผ๋˜๊ฐ€ scanf๋ง๊ณ  ๋‹ค๋ฅธ๊ฑธ ์“ฐ์„ธ์š”
scanf ๋ง๊ณ  getch() ๋˜๋Š” getche() <- ์˜ˆ์ œ๋กœ ๋ณด์‹œ๊ธฐ์—” ์ด์ชฝ์ด ๋” ๋‚˜์„ ๋“ฏ.

(์•ž์— ์•„๋งˆ #include <conio.h> ๋ถ™์ด์…”์•ผ ํ•  ๊ฑฐ๊ณ ...)
์นœ๊ตฌ๊ธ€ ๋น„๋ฐ€๊ธ€ ๋Œ“๊ธ€ ์“ฐ๊ธฐ

user error : Error. B.