我正在使用C文件。它們是非常非常大的文件。 我讀寫這些文件(它們只是格式化的文本文件)。 我不給他們任何延伸; 我只是說fopen("filename","r")
。在不同操作系統下處理C文件
現在文件具有類似
1 line1 100
2 line2 200
.
.
20000 line 20000 14567
問題是我執行它在Mac OS(豹爲特定)和內容,當我在另一個O/S打開相同的文件(沒有擴展名)( Windows是特定的)程序無法讀取文件的內容。 我想這是因爲該文件的格式不同。
標準文件格式或擴展名的任何解決方案與其他o/s不衝突?
僅僅因爲文件沒有擴展名,在Windows中不能打開。你打開它們時出錯了嗎?讀他們?在這種情況下出現什麼錯誤(檢查「errno」)?此外,將文件從OSX複製到Windows時,是否以某種方式複製它們,以便獲得正確的行結束符(它們在OSX和Windows上有所不同)? – 2012-02-11 19:53:00
操作系統之間的文本格式格式差別很小。你能更具體地說明你是如何在這兩個操作系統上「打開」文件的?你是通過在程序中調用fopen還是通過雙擊該文件? – 2012-02-11 20:13:21
考慮在兩個系統上用'fopen(「a」,「rb」);'打開文件。在Windows上,您不會得到正常的CRLF到LF映射(因爲沒有要映射的CRLF行尾),但是您將能夠讀取該文件。如果使用'fgets()'或類似的面向行的函數,這種映射的缺失會很重要;如果使用'getc()'或其他面向字節的函數,則無關緊要。 – 2012-02-11 20:25:24