[問題] 請問dev-c 和 linux c上 time delay差別?

看板C_and_CPP (C/C++)作者 (千里之外)時間14年前 (2011/12/26 11:09), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev-c vs linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我想要在螢幕上隨著時間秀出文字如下 分析中 分析中. 分析中.. 分析中... 前面文字不動,只是後面的 . 每1秒增加而已... 在dev-c上,不管我用for-loop或是Sleep()都可以達成效果... 而在linux上不管用for-loop或是sleep()去等,卻都是3秒過後,再一次出現全部....??? 請問我該怎麼該寫呢?? 餵入的資料(Input): int i; for(i=0 ; i<3; i++){ printf("."); sleep(1); } 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.26.121.1

12/26 11:19, , 1F
在 sleep 前加上 fflush(stdout); 即可
12/26 11:19, 1F

12/26 11:20, , 2F
這是因為你 printf 出來的東西還沒有被 flush 出去的關係
12/26 11:20, 2F

12/26 12:14, , 3F
補充,這是因為printf可以有buffer的機制,幫你暫存資料
12/26 12:14, 3F

12/26 12:14, , 4F
用fflush就可以強制把buffer暫存的資料給印出去
12/26 12:14, 4F

12/26 12:15, , 5F
但這好像沒有強制規定,所以不同平台可能會不一樣
12/26 12:15, 5F

12/26 12:43, , 6F
謝謝樓上2位指教...
12/26 12:43, 6F

12/26 13:44, , 7F
暴力一點就用 posix_fadvise, 再暴力一點可能就要 driver
12/26 13:44, 7F
文章代碼(AID): #1Ez-LWHz (C_and_CPP)
文章代碼(AID): #1Ez-LWHz (C_and_CPP)