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

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

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

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

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

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы