[問題] Xcode跑課程的範例一直Build Failed

作者: v303ofsky (阿速)   2014-05-29 00:39:04
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Xcode Version 4.5
問題(Question):
上禮拜週末去上台大資工開的C/C++基礎課程,上課是用VB教學,
課堂上的一個範例,回家用Xcode一直跑不出來?上課的時候老
師有提到conio.h如果到Mac的環境要改成curses.h,是改了以後
還是失敗,是哪裡有問題呢?
範例:輸入兩個數字, 再輸入+,-,*,/任一鍵, 根據輸入的
鍵內容顯示兩數計算結果
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <stdio.h>
#include <curses.h>
int main()
{
double a,b,ans;
char key;
printf("input two number:");
scanf("%lf %lf",&a,&b);
printf("press +,-,*,/:");
key=getch();
switch(key)
{
case '+':
ans=a+b;
break;
case '-':
ans=a-b;
break;
case '*':
ans=a*b;
break;
case '/':
ans=a/b;
break;
default:
printf("Undefined key\n");
return 0;
}
printf("%lf%c%lf=%lf\n",a,key,b,ans);
return 0;
}
補充說明(Supplement):
作者: putumaxally (putumaxally)   2014-05-29 00:49:00
把#include <conio.h> 刪掉?getch() 改成 getchar() 看看
作者: brilliantye (不來&石見)   2014-05-29 09:28:00
mac 用bash去編譯看看
作者: uranusjr (←這人是超級笨蛋)   2014-05-29 10:01:00
Linker error, 要加 -lncurses (curses 的 lib file)
作者: v303ofsky (阿速)   2014-05-29 13:55:00
謝謝各位前輩的回答,我改成getchar後是編譯成功了,但是輸入完兩個數字後,不等我輸入+-*/他就直接跑去執行default最後給我show出Undefined key了耶...不好意思,u大,您的解釋我看不懂耶?
作者: EdisonX (卡卡獸)   2014-05-29 16:32:00
是我看錯嗎…上課用vb教學…
作者: putumaxally (putumaxally)   2014-05-29 18:18:00
scanf("%lf %lf %c",&a,&b,&key); // 我不知道為什麼getchar() 會不能用...
作者: v303ofsky (阿速)   2014-05-29 20:09:00
不好意思,我記得是visual basic 201X,還是我記錯?p大,我也不知道為什麼耶...
作者: CaptainH (Cannon)   2014-05-29 20:12:00
應該是因為 getchar() 吃到空格了
作者: v303ofsky (阿速)   2014-05-30 00:29:00
問過授課老師以後問題解決了,只不過蠻麻煩的...但是用getchar又會直接跳default,好煩阿...
作者: putumaxally (putumaxally)   2014-05-30 02:43:00
scanf("%lf %lf %c",&a,&b,&key); 不行嗎
作者: Killercat (殺人貓™)   2014-05-30 11:03:00
用vc教學很正常阿 有免錢的express版 不過我也不喜歡
作者: uranusjr (←這人是超級笨蛋)   2014-05-30 11:05:00
↑原 po 寫的是 VB XD
作者: v303ofsky (阿速)   2014-05-31 21:25:00
我寫錯了,是VC才對scanf,getch,getchar會去抓輸入數字時的"enter",所以需要在scanf,getch,getchar之前加上一行"fflush(stdin);"強制清除鍵盤輸入殘留的按鍵,就不會直接跳去default了謝謝各位參與討論的前輩們!
作者: LPH66 (-6.2598534e+18f)   2014-06-01 00:51:00
......請別用 fflush(stdin)要清 enter 請 getchar() 到 '\n' 為止
作者: v303ofsky (阿速)   2014-06-01 23:07:00
咦?可以再解釋的清楚些嗎?為何不能用fflush(stdin)?

Links booklink

Contact Us: admin [ a t ] ucptt.com