2011-06-30 13 views
5

Próbuję wysłać tablicę, która [2 x N] podwaja dużą do pliku tekstowego za pomocą komendy fprintf(). Mam problemy z tym, że fprintf() nie rozpoznaje nowego polecenia linii (\n) lub polecenia powrotu karetki (\r). Kod używam jestfprintf nie drukuje nowej linii

fid = fopen([Image.Dir,'CtlPts_',Image.Files{k},'.txt'],'w'); 
fprintf(fid,'%.4f\t%.4f\n',control_points{k}); 
fclose(fid); 

gdzie dane Próbuję wydrukować w komórce control_points{k}.

Zakładka zostanie wydrukowana poprawnie, ale wszystko w pliku tekstowym zostanie wydrukowane w jednym wierszu, dlatego zakładam, że ignoruje ona moją nową linię.

Czy jest coś nie tak z moją składnią, której nie widzę?

+2

czy zrobiłeś zrzut pliku? Wiem, że na wielu systemach \ n nie wystarcza do stworzenia tego, o co prosisz (i, być może, musisz zrobić \ r \ n). – KevinDTimm

+0

@KevinDTimm Nie jestem pewien, co robi zrzut pliku (czy możesz wyjaśnić w formacie odpowiedzi), ale przy użyciu \ r \ n działało. Napisz to jako odpowiedź, a ja ją wybiorę. –

+0

przyczyną zrzutu jest sprawdzenie, czy plik zawiera \ n. Jeśli tak (prawdopodobnie), wówczas obowiązuje druga część mojego komentarza/odpowiedzi. – KevinDTimm

Odpowiedz

9

Wiem, że w wielu systemach, \ n nie wystarczy, aby stworzyć to, co pytasz o (i tak, może trzeba zrobić \ r \ n)

+0

'\ r \ n' naprawdę dotyczy tylko systemu Windows, większość innych platform używa' \ n'. –

+0

@RemyLebeau - A jednak wydaje się, że to było rozwiązanie problemu – KevinDTimm

8

Alternatywnym rozwiązaniem jest open plik, w trybie tekstowym, że sposób MATLAB automatycznie wstawia powrót karetki \r przed jakimkolwiek nowej linii \n znak na wyjściu w systemach Windows:

fid = fopen('file.txt', 'wt'); 
fprintf(fid, '%f\t%f\n', rand(10,2)); 
fclose(fid); 

pamiętać, że jest nieco zbędne, ponieważ większość redaktorów (z wyjątkiem Microsoft Notatnik) rozpoznaje U Zakończenia linii nix/Mac/Windows.

Powiązane problemy