проблема \r\n
От: fkRTTI  
Дата: 28.01.10 13:36
Оценка:
подскажите пожалуйста winapi функцию конфертируюшую отвофрматированный под mac\linux текстовый файл (с концами строк \r либо \n) в стнадртное для win представление — \r\n. спасибо
Re: проблема \r\n
От: Кодт Россия  
Дата: 28.01.10 14:56
Оценка:
Здравствуйте, fkRTTI, Вы писали:

RTT>подскажите пожалуйста winapi функцию конфертируюшую отвофрматированный под mac\linux текстовый файл (с концами строк \r либо \n) в стнадртное для win представление — \r\n. спасибо


Самый тупой способ — открыть файл на чтение как бинарный и записать как текстовый. Все \n заменятся на \r\n
FILE* in = fopen("src.txt", "rb");
FILE* out = fopen("dst.txt", "wt");
while(!feof(in)) fputc(fgetc(in), out); // unix -> родное для данной платформы


Продвинутый способ — открыть как бинарный, читать, находить \n, \r, \r\n и превращать в то, что требуется
FILE* in = fopen("src.txt", "rb");
FILE* out = fopen("dst.txt", "wb");
char c;
while(!feof(in))
{
  c = fgetc(in);
  if(c == '\r') fputs("\r\n", out); // mac -> dos
}


А ещё можно припахать шелл или перл
http://www.cyberciti.biz/faq/howto-unix-linux-convert-dos-newlines-cr-lf-unix-text-format/
Перекуём баги на фичи!
Re[2]: проблема \r\n
От: fkRTTI  
Дата: 28.01.10 20:22
Оценка:
Спасиб, думал есть какаянибудь винапи функция для этого.
Re[2]: проблема \r\n
От: Pzz Россия https://github.com/alexpevzner
Дата: 28.01.10 22:22
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Самый тупой способ — открыть файл на чтение как бинарный и записать как текстовый. Все \n заменятся на \r\n

К>
К>FILE* in = fopen("src.txt", "rb");
К>FILE* out = fopen("dst.txt", "wt");
К>while(!feof(in)) fputc(fgetc(in), out); // unix -> родное для данной платформы
К>


Более того, если вы всегда будете открывать файл как текстовый, и на чтение, и на запись, то вы будете совершенно спокойно читать и юниксовские и досовские текстовые файлы, а записывать всегда в досовском формате.

Однако сейчас это не круто. Круто — это записывать измененный файл в том же формате, в каком был оригинал. Все более-менее приличные редакторы текста так и делают.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.