是否有一個平臺無關的方式將EOF
符號寫入Ruby中的字符串。在* nix中我相信符號是^D
,但在Windows中是^Z
,這就是爲什麼我問。紅寶石跨平臺的方式來編寫EOF符號
6
A
回答
17
EOF不是一個字符,它是一個狀態。終端使用控制字符來表示這種狀態(C-d)。 「讀EOF 人物」並沒有這樣的東西,寫同一件事情也是一樣。如果您正在寫入文件,請在完成後關閉它。看到這個mailing list post:
這聽起來像你正在爲帶內,但特殊字符 值標誌着文件的結束思維的EOF 。它 最好把它想象成一個 帶外標記值。在C中,EOF 通常是-1,並且關聯的API 指定整數返回值,所以 EOF保證永不會與有效的帶內值混淆 。
這裏的一些證據(這樣做在Unix):
$ cat > file
hello^V^Dworld
^D
$ cat file
helloworld
打字^ V^d插入控制d字從字面上到文件中。輸入world並輸入後,^ D關閉管道。該文件最後是12個字節長的10個字母,另外兩個用於^ D和換行符。最後的^ D並沒有在文件中結束。它只是由終端/外殼用來關閉管道。
5
通常沒有EOF字符。也就是說,沒有跨平臺的解決方案,甚至在特定的平臺上,處理這樣的角色也是純粹的傳統和不一致的。通過關閉它來結束文件。
但是,在某些模式下讀取文件時,某些操作系統確實支持字面文件結尾字符。例如,如果您在Windows下運行並使用C stdio API以文本模式讀取文件,那麼文字控制-Z(字符代碼26)將以文件結尾標記爲stdio。這是來自MS/DOS的保留,它作爲CP/M的保留。如果使用stdio並以二進制模式讀取文件,那麼control-Z將不會結束文件。
儘管如此,你只應該把它想成「知道,不要用」的特性。如果你在Windows上看到trucated輸入/輸出,你會想知道它,但使用它是瘋狂的。
相關問題
- 1. 紅寶石藍牙(Mac /跨平臺)
- 2. 紅寶石 - 從串口獲取USB VID/PID在一個跨平臺的方式
- 3. 有沒有可以實現跨平臺鼠標操作的紅寶石寶石?
- 4. 如何符號紅寶石
- 5. 紅寶石符號約定
- 6. 紅寶石 - 瞭解符號
- 7. 紅寶石形式和符號
- 8. C++跨平臺方式來定義64位無符號整數
- 9. 管理平臺紅寶石運行
- 10. 紅寶石中的「冒號」符號
- 11. 更傳統的方式來寫這個紅寶石
- 12. 各種方式來更新紅寶石寶石
- 13. 紅寶石寫值
- 14. 寫在紅寶石
- 15. 更優雅的方式來寫一個多維數組的字符紅寶石?
- 16. 紅寶石的方式來檢查字符串迴文
- 17. 紅寶石:優雅的方式來替換字符串
- 18. 紅寶石掃描/得到直到EOF
- 19. 無符號的數字紅寶石
- 20. 紅寶石成語的分組符號
- 21. 紅寶石:秒格式編號,以格式化的時間
- 22. 簡單的拼寫檢查方法/寶石紅寶石?
- 23. 平等紅寶石vs rspec
- 24. 2水平在紅寶石
- 25. 紅寶石 - 陣列弄平
- 26. 紅寶石陣列平等
- 27. 平紅寶石網站?
- 28. 紅寶石平行分配
- 29. 紅寶石寶石Squeel,如何編寫自加入
- 30. 紅寶石郵件寶石,如何編寫腳本郵件
只是出於好奇,爲什麼你需要這個? – 2009-07-04 02:29:15
例如我有一些PDF文件,我無法通過「convert」(ImageMagick)進行轉換,因爲它們缺少EOF標記。同時這些文件可以被桌面應用程序查看。我想嘗試添加這樣的標記,然後轉換PDF ... – 2012-01-18 13:35:25