1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

Проблема С Кодировкой В С

Тема в разделе "С и С++", создана пользователем Borodo, 22 май 2013.

  1. Borodo

    Borodo New Member

    Репутация:
    0
    Регистрация:
    22 май 2013
    Сообщения:
    1
    Симпатии:
    0
    Мне нужно считать все символы из файла .rar, но считываются только некоторые,
    далее программа считает, что файл закончился и прекращает работу.
    Мне кажется, что проблема в кодировке этих символов. Каким образом можно это обойти?

    Листинг программы:

    #include <stdio.h>
    #include <conio.h>

    void main ()
    {
    char *a="", *b="";
    FILE *in, *out;
    in = fopen("input.txt", "r");
    out = fopen("output.txt", "w");
    while (!feof(in))
    {
    fscanf(in, "%c%c%c%c", &a[0], &a[1], &b[0], &b[1]);
    fprintf(out, "%c%c%c%c", b[0], b[1], a[0], a[1]);
    }
    fcloseall();
    getch();
    }

    Пример содержимого файла:

    Rar! Пђs Ilt ‚q6 К"щ.&мµі”B5#’ЁЇл

    Считываемые символы:

    Rar!
     
  2. EugenOS

    EugenOS Active Member

    Репутация:
    0
    Регистрация:
    22 июл 2007
    Сообщения:
    27
    Симпатии:
    0
    а зачем так сложно? можно стримами сделать. ну или в лоб, по старинке:
    Код:
    #include <sys\stat.h>
    #include <fcntl.h>
    #include <stdio.h>
    
    int in, out;
    in = open( "input.txt", O_RDONLY, D_IREAD);
    out=open("output.txt" , O_CREAT|OWROLY, S_IWRITE);
    int len = filelength(in);
    char buf[4];
    for( int i=0; i < len / 4; i++)
    {
    read( int, buf, 4 );
    write(out, buf+2, 2);
    write(out, buf, 2);
    }
    // ну а с хвостиком 0...3 байт сами разберетесь...;)
     
Загрузка...

Поделиться этой страницей