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