[問題] Cygwin+gcc 程式運作問題?

看板Linux作者 (ㄎㄎ)時間8年前 (2017/11/16 20:09), 8年前編輯推噓3(303)
留言6則, 3人參與, 8年前最新討論串1/1
不知道要發在Linux版還是C_and_CPP版 想想還是發在Linux版好了 如題,昨天試驗從C_and_CPP版的程式思路,是關於把float轉二進制的程式 程式碼如下 #include<stdio.h> int f(int i, int j) { return (i < 32)?f(i + 1, j) && printf("%d", (j>>i)&1):1; } int main() { float a; int *b = (int *)&a; while(scanf("%f", &a) != EOF && f(0, *b)) printf("\n"); return 0; } 但卻發現輸入數字後,不會出現我想要的輸出(浮點數->二進位),一直沒有輸出,像是 這樣: $./a.exe 10 20 30 40 完全不會有輸出 debug半天後發現好像是Cygwin的問題,直接在Win的資料夾打開後可以正常輸出 後來試驗過如果用管線的話可以正常運作 EX. echo 10 | ./a.exe OK echo 10 | ./a.exe > out OK 但就是直接用鍵盤輸入時不會有動作 後來再寫一個小程式,反應也是一樣 #include<stdio.h> int main() { int a; while(scanf("%d", &a) != EOF) printf("%d\n", a); return 0; } 想來應該是,Cygwin的問題了,有人有遇過類似的現象嗎?謝謝 附上環境: WIN10 64bit CYGWIN_NT-10.0 version 2.9.0(0.318/5/3) (corinna@calimero.vinschen.de) (gcc version 5.4.0 20160603 (Fedora Cygwin 5.4.0-2) (GCC) ) gcc version 7.1.0 (x86_64-posix-seh-rev2, Built by MinGW-W64 project) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.109.77 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1510834144.A.5DA.html

11/16 20:17, 8年前 , 1F
那就用管道啊, 像 cat | ./a.out
11/16 20:17, 1F

11/16 20:18, 8年前 , 2F
可能是 cygwin 對 stdio 有一些包裝吧
11/16 20:18, 2F
可是在昨天以前(第一個程式以前)都沒有問題,直到執行第一個程式後才有問題,另外這 個問題也有在我的WIN7筆電出現過(一直沒有輸出,用GDB除錯時發現有執行printf(),但 沒輸出)

11/16 20:36, 8年前 , 3F
你直接printf呢?
11/16 20:36, 3F
printf("hello, world\n"); OK c = getchar while(printf("hello, world\n")); OK while((c = getchar()) != EOF && printf("hello, world\n")); ERROR ※ 編輯: wei115 (59.126.109.77), 11/16/2017 21:14:11

11/17 08:10, 8年前 , 4F
我在我的win10 cygwin測試了一下 正常喔
11/17 08:10, 4F

11/17 08:11, 8年前 , 5F
CYGWIN_NT-10.0 2.9.0(0.318/5/3) 2017-09-12 10:18
11/17 08:11, 5F

11/17 08:12, 8年前 , 6F
x86_64 Cygwin; gcc (GCC) 6.4.0
11/17 08:12, 6F
文章代碼(AID): #1Q3N_WNQ (Linux)
文章代碼(AID): #1Q3N_WNQ (Linux)