Программа по перекодировке текстовых файлов - 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]); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д