Как читать созданный Linux или Mac файл в Windows через C FILE *? - PullRequest
6 голосов
/ 09 февраля 2011

Как все, что мы знаем в Windows, EOL - это CRLF, а в Linux - LF и CR в Mac. ( MORE_INFO )

Я хочу написать программу, которая будет читать как Linux, так и Mac, а также Win файлы построчно в Windows. Чтобы открыть файл, я бы использовал fopen в режиме «rt», но я не знаю, как читать строки. fgets читает до CRLF и LF под Windows, но я хочу, чтобы он работал и для файлов EOL = CR.

Так в чем же решение? Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 10 февраля 2011

Чтобы открыть в режиме "t", файл должен соответствовать платформе, на которой вы работаете. В противном случае вам просто нужно открыть в двоичном режиме и самостоятельно разобрать разницу.

Библиотека C помогает вам написать программу, которая работает примерно одинаково на разных платформах, но не поддерживает "перекрестное чтение" файлов.

1 голос
/ 22 февраля 2011

Поэтому я не смог найти ничего хорошего для себя и решил написать свою собственную функцию my_fgets, которая использует fgetc в теле.

1 голос
/ 09 февраля 2011

Пока вы открываете файл в режиме rt (чтение - текст), все будет в порядке.fgets () возвращает одну строку и обрабатывает тонкие различия между платформами.При записи в файл используйте '\ n' в качестве EOL, и вы получите правильные окончания строк для вашей платформы.Это причина открытия файла в текстовом режиме.Если вы используете двоичный режим, вам придется обрабатывать все различные окончания строк в вашем программном обеспечении.

...