Программа по перекодировке текстовых файлов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужна помощ в разработке программы по перекодировке текстовых файлов из кодового набора кои-8 в кодовый набор ср1251 по таблице, заданной в текстовом файле. Имя файла таблицы вместе с именем файлов исходного текста и результата его перекодировки должно передаваться программе через аргументы командной строки её вызова. Данные в таблице перекодировки должны быть представлены в системе счисления по основанию 8. Дело в том что я не могу понять как это представить в восьмеричной системе счисления

Решение задачи: «Программа по перекодировке текстовых файлов»

textual
Листинг программы
#include <stdio.h> /* zagolovok potoka vvoda*/
int koiwin(int); /*deklaraciya  funkcii perekadirivki*/
int main(int argc,char* argv[]) /*osnova*/
{
FILE* fps; /*koi-8*/
FILE* fpt; /*cp1251*/
int c;
if (argc<3)
{fprintf(stderr,"Usage: %s text.koi text.win\n", argv[0]);
return(-7); /*diagnosticheskoe zavershenie*/
}
 
if((fps=fopen(argv[1],"r")) == NULL)
{
perror(argv[1]); /*sistemnaya diagnostica*/
return(2); /*avaryinoe zavershenie*/
}
if((fpt=fopen(argv[2],"w")) == NULL)
{
perror(argv[2]);/*sistemnaya diagnostica*/
return(13);
}
while((c=fgetc(fps)) != EOF) /* chtenie simvolov*/
{
c=koiwin(c); /*perekodirovka(vizov funkcii*/
fputc(c,fpt); /*zapis simvola*/
}
fclose(fps); /*zakritie faila vvoda*/
fclose(fpt); /*zakritie faila vvoda*/
return 0; /*yse*/
}
int koiwin(int c)
{
static char sub[32] = {30,0,1,22,4,5,20,3,21,8,9,10,11,12,13,14,15,31,16,17,18,19,6,2,28,27,7,24,29,25,23,26};/*koi-8=sub[cp1251]*/
static unsigned char tab[64]; /*tablica perecodirovki*/
static int i=0; /*no,er bukvi v koi8*/
while(i<32)
{
tab[i+32] = sub[i]+0300;
tab[i]=sub[i] +0340;
i++;
}
if(i<0300) /*propuk dokirilicheskih kodov (00-0277)*/
return(c);
return(tab[c-0300]);
}

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы