Нужна программа для преобазования текстовых файлов фомата win в фомат unix

Ответить
alex_dorin
Сообщения: 208
Зарегистрирован: 26 дек 2016, 08:49
Operating system: r10 plasma

Нужна программа для преобазования текстовых файлов фомата win в фомат unix

Сообщение alex_dorin » 06 ноя 2017, 10:54

Здравствуйте !
Нужна программа для преобазования текстовых файлов фомата win в фомат unix.
Пользуюсь своей когда-то сделанной, но в ней не все кошерно -

Код: Выделить всё

#pragma hdrstop
#pragma argsused
#include <stdio.h>
#pragma hdrstop

#define  begin {
#define  end   }

int main(int number, char *names[])
begin

char *msg1="***d2u start";
char *msg2="***d2u oshibka vyzova. format : d2u.exe inp  out";
char *msg3="***d2u oshybka otkr fajla ";
char *msg5="***d2u oshybka chtenija ";
char *msg6="***d2u end";
char *msg7="***d2u oshybka zapisi";
FILE *fin, *fou;
unsigned char          min[10];
register int           ckol =0;
		 int           recsize;
/**/
printf("%s\n",msg1);
	if (number != 3)		{
							printf("%s\n",msg2);
							return -1;
							}
fin = fopen(names[1],"rb");
if ((fin) == NULL )      	{
							printf("%s%s\n",msg3,names[1]);
							return -2;
							}
fou = fopen(names[2],"wb");
if ((fou) == NULL )      	{
							printf("%s%s\n",msg3,names[2]);
							return -3;
							}
/* ===================================================================== */
loop:      if (fread(min,1,1,fin) == 0 )  	        {
			  if (feof(fin) == 0)  {
								   printf("%s\n",msg5);
								   return -4;
								   }
		   goto finish;                             //����� �����
													}

		   if ( min[0] == 0x0D )              goto loop;
			  if ( fwrite(min,1,1,fou) !=1 )  {
											  printf("%s\n",msg7);
											  return -5;
											  }
		   ++ckol;
		   goto loop;
/* ===================================================================== */
finish:
   fclose(fin);
   printf("%s%s%s%d%s\n","***d2u fajl ",names[1]," udaleno 0x0D ",ckol, " bajt");
   printf("%s\n",msg6);
   return 0;
end
// end programm d2u.c

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: Нужна программа для преобазования текстовых файлов фомата win в фомат unix

Сообщение trs » 07 ноя 2017, 10:23

А пакет dos2unix не пробовали?

Код: Выделить всё

$ dos2unix  --help
Использование: dos2unix [параметры] [файл …] [-n входной_файл выходной_файл …]
 -ascii                преобразовать только конец строки (по умолчанию)
 -iso                  преобразовать DOS в ISO-8859-1
   -1252               использовать кодировку Windows 1252 (Западно-Европейский)
   -437                использовать кодировку DOS 437 (US) (по умолчанию)
   -850                использовать кодировку DOS 850 (Западно-Европейский)
   -860                использовать кодировку DOS 860 (Португальский)
   -863                использовать кодировку DOS 863 (Франко-Канадский)
   -865                использовать кодировку DOS 865 (Скандинавский)
 -7                    преобразовать 8-битные символы в 7-битные
 -b, --keep-bom        сохранить метку порядка байтов (BOM)
 -c, --convmode        режим преобразования
   convmode            ascii, 7bit, iso, mac, по умолчанию в ascii
 -f, --force           управление преобразованием двоичных файлов
 -h, --help            показать справку
 -i, --info[=ФЛАГИ]    показать информацию о файле
   файл …              файлы для анализа
 -k, --keepdate        сохранить дату выходного файла
 -L, --license         отобразить лицензию программного обеспечения
 -l, --newline         добавить дополнительный разделитель строк
 -m, --add-bom         добавить метку порядка байтов (по умолчанию в UTF-8)
 -n, --newfile         записать в новый файл
   infile              исходный файл в режиме нового файла
   outfile             выходной файл в режиме нового файла
 -o, --oldfile         записать в старый файл (по умолчанию)
   file …              файлы для преобразования в режиме старого файла
 -q, --quiet           не показывать предупреждения
 -r, --remove-bom      удалить метку порядка байтов (BOM) (по умолчанию)
 -s, --safe            пропустить двоичные файлы (по умолчанию)
 -u,  --keep-utf16     оставить кодировку UTF-16
 -ul, --assume-utf16le предположить, что входной формат UTF-16LE
 -ub, --assume-utf16be предположить, что входной формат UTF-16BE
 -v,  --verbose        подробный режим
 -F, --follow-symlink  следовать символическим ссылкам и преобразовать цели
 -R, --replace-symlink заменить символические ссылки преобразованными файлами
                         (оригинальные целевые файлы останутся без изменений)
 -S, --skip-symlink    оставить символические ссылки и цели без изменений (по умолчанию)
 -V, --version         отобразить номер версии

notauser
Сообщения: 1254
Зарегистрирован: 06 май 2012, 21:00

Re: Нужна программа для преобазования текстовых файлов фомата win в фомат unix

Сообщение notauser » 07 ноя 2017, 16:31

В GNU/Linux (unix) много всякого (tr, (g)awk, sed и ещё много того, что не знаю). Насколько я понял проблему "CRLF" "преобазования текстовых файлов фомата win в фомат unix" надо решить именно там, где она создаётся. Или это вообще не о том?

Ответить

Вернуться в «Программы РОСА десктоп»