[C] przenoszenie źródła

redemptorek
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 7 lip 2007, o 09:43
Płeć: Mężczyzna
Lokalizacja: z Folwarku
Podziękował: 13 razy
Pomógł: 2 razy

[C] przenoszenie źródła

Post autor: redemptorek »

Mam problem z plikami z kodem źródłowym tworzonymi pod Windowsem jako txt a przenoszonymi pod UNIXa. W edytowanych już pod UNIXem plikach każdą linię kończy znak: ^M, który - jeśli nie zostanie usunięty - powoduje błąd kompilacji. Wiem, że pewna sekwencja komend wydana powoce powinna rozwiązać problem, niestety, mimo że googlam zawzięcie, takowej nie znajduję.
A moze istnieje inna prosta i skuteczna metoda z tego wybrniecia
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

[C] przenoszenie źródła

Post autor: smiechowiec »

Pod dosem (windows, mac) na kónu każdej linii kryją się 2 znaki o kodach 13 (CR) i 10 (LF).
W unix jest tylko znak o kodzie 10.
Rozwiązań jest kilka
Przy kopiowaniu pliku programem ftp ustawiamy tryb kopiowania nie binarny, a tekstowy.
Wtedy pliki będą miały poprawne znaki w obu systemach.
Ewentualnie polecenie dos2unix usunie zbędne znaki 13.
Edytory pod windows czasem mają ustawienia, w których podaje się jak ma się kończyć linia, więc wystarczy to odpowiednio ustawić.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[C] przenoszenie źródła

Post autor: soku11 »

To wszystko zalezy w czym piszesz :) Piszac w np. CodeBlocks masz w opcjach edytora cos takiego jak End-Of-Line Mode, gdzie mozesz wybrac 'CR LF', 'CR' lub 'LF'. Coprawda ja nigdy nie mialem z tym problemu i nigdy tego nie zmienialem, no ale moze sie przydac jak widac :) Pozdrawiam.
redemptorek
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 7 lip 2007, o 09:43
Płeć: Mężczyzna
Lokalizacja: z Folwarku
Podziękował: 13 razy
Pomógł: 2 razy

[C] przenoszenie źródła

Post autor: redemptorek »

póki co udało mi się rozwiązać to poleceniem:

Kod: Zaznacz cały

sed 's/.$//' plika > plikb
gdzie plika jest *.txt lub *.c kompatybilnym z Windosowym końcem wiersza, zaś plikb - z UNIXowym

...a gdyby ktoś chciał w drugą stronę, zadziałać powinno:

Kod: Zaznacz cały

sed -e 's/$/\r/' plikb > plika
(zgodnie z ozn. wyżej)

ale że to wyżej straszy składnią, metody bardziej przyjaznej poszukam wśród Waszych rad (dzieki!) :wink:
ODPOWIEDZ