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

Borodo

New member
22.05.2013
1
0
#1
Мне нужно считать все символы из файла .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!
 

EugenOS

Active member
22.07.2007
27
0
#2
а зачем так сложно? можно стримами сделать. ну или в лоб, по старинке:
C++:
#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 байт сами разберетесь...;)