2011-02-09 19 views
6

Windows'da bildiğimiz kadarıyla EOL, CRLF ve Mac'te LF ve CR linux'tur. (more_info)Linux veya Mac, C DOSYASI * aracılığıyla Windows'ta nasıl dosya oluşturdu?

Linux'taki dosyaları Linux'ta satır olarak kaydetme işlemini Linux ve Linux olarak okuyan bir program yazmak istiyorum. Dosya açmak için fopen'i "rt" modunda kullanacağım, ancak satırların nasıl okunacağını bilmiyorum. fgets Windows altında CRLF ve LF'ye kadar okur, ancak EOL = CR dosyaları için de çalışmasını isterim.

Peki çözüm nedir? Şimdiden teşekkürler. Dosyayı rt modunda (oku - metin) açtığınız sürece, iyi olmalısınız.

+5

Linux, LF değil CR kullanır. MacOS9 düz CR kullanmıştır. –

+0

Evet haklısınız, PiotrLegnica http://mc-computing.com/languages/CR_LF.htm bu tüm liste. –

+3

@Mihran: MacOSX, LF'yi kullanıyor. –

cevap

1

Bu yüzden, benim için hiçbir şey bulamadım ve fgetc gövdesini kullanan kendi my_fgets işlevimi yazmaya karar verdim.

1

fgets() bir satır döndürür ve platformlar arasındaki ince farkları ele alır. Bir dosyaya yazarken, '\ n' özelliğini EOL olarak kullanın ve platformunuz için doğru satır sonlarını alacaksınız. Dosyayı metin modunda açma sebebi budur. Eğer ikili mod kullanırsanız, yazılımınızdaki tüm farklı satır sonlarını işlemek zorunda kalacaksınız.

+0

Linux sunucusundan Windows'ta istemci programım aracılığıyla dosya alıyorum. İşte bu yüzden çoğu zaman okuyacağım dosyalar EOL linux formatına sahip. –

+0

@Mihran: Fark etmez, farklar sizin tarafınızdan ele alınacaktır, bu yüzden bu konuda endişelenmeyin ... Windows'dan Linux satır sonu ile dosya yazmak istemediğiniz sürece :) –

+0

Denemeye başladım. İşe yaramıyor :(LF ve CRLF Windows'da çalışıyor, ama CR değil. Mac ve Linux'ta bunu denemeyin, ancak her şeyin yolunda olacağından emin olun. –

2

"t" modunda açmak için, dosya üzerinde çalıştığınız platforma uygun olmalıdır. Aksi takdirde, sadece ikili modda açmanız ve farkı kendiniz ayırmanız gerekir.

C kütüphanesi, farklı platformlarda aynı şekilde çalışan bir program yazmanıza yardımcı olur, ancak dosyaları "çapraz okumayı" desteklemez.

İlgili konular