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

看板C_and_CPP (C/C++)作者 (阿速)時間12年前 (2014/05/29 00:39), 編輯推噓3(3024)
留言27則, 8人參與, 最新討論串1/1
開發平台(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): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.101.143 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1401295146.A.124.html

05/29 00:49, , 1F
把#include <conio.h> 刪掉?
05/29 00:49, 1F

05/29 00:50, , 2F
getch() 改成 getchar() 看看
05/29 00:50, 2F

05/29 09:28, , 3F
mac 用bash去編譯看看
05/29 09:28, 3F

05/29 10:01, , 4F
Linker error, 要加 -lncurses (curses 的 lib file)
05/29 10:01, 4F

05/29 13:55, , 5F
謝謝各位前輩的回答,我改成getchar後是編譯成功了,
05/29 13:55, 5F

05/29 13:56, , 6F
但是輸入完兩個數字後,不等我輸入+-*/他就直接跑去執行
05/29 13:56, 6F

05/29 13:57, , 7F
default最後給我show出Undefined key了耶...
05/29 13:57, 7F

05/29 13:57, , 8F
不好意思,u大,您的解釋我看不懂耶?
05/29 13:57, 8F

05/29 16:32, , 9F
是我看錯嗎…上課用vb教學…
05/29 16:32, 9F

05/29 18:18, , 10F
scanf("%lf %lf %c",&a,&b,&key); // 我不知道為什麼
05/29 18:18, 10F

05/29 18:19, , 11F
getchar() 會不能用...
05/29 18:19, 11F

05/29 20:09, , 12F
不好意思,我記得是visual basic 201X,還是我記錯?
05/29 20:09, 12F

05/29 20:09, , 13F
p大,我也不知道為什麼耶...
05/29 20:09, 13F

05/29 20:12, , 14F
應該是因為 getchar() 吃到空格了
05/29 20:12, 14F

05/30 00:29, , 15F
問過授課老師以後問題解決了,只不過蠻麻煩的...
05/30 00:29, 15F

05/30 00:30, , 16F
但是用getchar又會直接跳default,好煩阿...
05/30 00:30, 16F

05/30 02:43, , 17F
scanf("%lf %lf %c",&a,&b,&key); 不行嗎
05/30 02:43, 17F

05/30 11:03, , 18F
用vc教學很正常阿 有免錢的express版 不過我也不喜歡
05/30 11:03, 18F

05/30 11:05, , 19F
↑原 po 寫的是 VB XD
05/30 11:05, 19F

05/31 21:25, , 20F
我寫錯了,是VC才對
05/31 21:25, 20F

05/31 21:27, , 21F
scanf,getch,getchar會去抓輸入數字時的"enter",所以需
05/31 21:27, 21F

05/31 21:29, , 22F
要在scanf,getch,getchar之前加上一行"fflush(stdin);"
05/31 21:29, 22F

05/31 21:30, , 23F
強制清除鍵盤輸入殘留的按鍵,就不會直接跳去default了
05/31 21:30, 23F

05/31 21:30, , 24F
謝謝各位參與討論的前輩們!
05/31 21:30, 24F

06/01 00:51, , 25F
......請別用 fflush(stdin)
06/01 00:51, 25F

06/01 00:52, , 26F
要清 enter 請 getchar() 到 '\n' 為止
06/01 00:52, 26F

06/01 23:07, , 27F
咦?可以再解釋的清楚些嗎?為何不能用fflush(stdin)?
06/01 23:07, 27F
文章代碼(AID): #1JXX4g4a (C_and_CPP)
文章代碼(AID): #1JXX4g4a (C_and_CPP)