2016-04-05 18 views
0

Dosya satırını okuyacak ve görüntüleyecek basit bir uygulama yazdım. FTP kullanarak Linux veya Windows makinelerinden kopyalanan dosya için iyi çalışıyor. Ancak Mac OS X'ten kopyalanan dosyalar için, çizgiyi yazdırdığımda hattın ilk karakteri gösterilmiyor.CR/LF dosyası, Mac'den kopyalanan dosya için

Mac OS X'den kopyalanan dosya nasıl işlenir?

Örnek dosyası: çizgiyle

Hello world 1 
Hello world 2 

Ekran sonra okunan satır:

ello world 1 
ello world 2 

Kodu: Genelde

/*****Function to add the NULL termination at end of line*********/ 

my_func(char *str, int len) 
{ 
    if(len) 
    { 
     if(str[len-1] != '\r') 
     { 
      str[len] = '\0'; 
     } 
     else 
     { 
      str[len-1] = '\0' 
     } 
    } 
    else 
    { 
     str[len]='\0'; 
    } 
} 
+3

sen baktınız mı:, sadece böyle bir şey yapabileceğini

len Eğer tampon içerisinde tek bir satır uzunluğunu içerir ve sadece yeni satır karakteri (ler) sondaki keserek istiyorum bir hex editöründe örnek dosya? – paddy

+2

OS X'den kopyalanan dosya, başka bir yolla (veya Mac OS 9 veya daha önce kastedilmedikçe) yazılması için olağanüstü uzunluklara gitmediğiniz sürece, Linux'tan kopyalanan dosyaya eşdeğer olacaktır; ancak bu makineler şu ana kadar ölmüş olmalıdır; Mac OS 9'un son yayımlanmasından bu yana yaklaşık 15 yıl geçti. Satırdaki asıl baytlara çok sıkı bakmanız gerekir. Örneğin, 'için (int i = 0; i

cevap

2

, satır besleme \n için bakmak istiyorum ve satır başı \r. Sisteme bağlı olarak, bunlardan birini veya her ikisini birden elde edebilirsiniz. Bu yüzden fonksiyonunuzu biraz değiştirmek isteyebilirsiniz.

while(len > 0 && (str[len-1] == '\n' || str[len-1] == '\r')) --len; 
str[len] = '\0'; 
İlgili konular