[C++] Przepisać plik?

Witam serdecznie. W ramach rozgrzewki chciałem napisać program przepisujący dowolny plik. Niestety udaje się tylko dla *.txt. Gdy próbuje odczytać np rar czyta mi tylko 4 znaki, w innych wypadkach jest inaczej. Pomoże ktoś?

Dev-C++,xpsp3

#include 

#include 

int main ()

{

  FILE *f, *g, *h;

  char c=0;

  int i=0;

  unsigned int znakow = 0;

  int tab[257]={0};

  f = fopen("C:/plik_in.txt","r");

  g = fopen("C:/plik_out.txt","w");

  h = fopen("C:/plik_info.txt","w");

  while ((std::fscanf(f,"%c",&c))!=EOF){

                      std::fprintf(g,"%c",c);

                      tab[(int)c]++;

                      znakow++;

                      }

  c=0;

  printf("Znakow: %d",znakow);

  fprintf(h,"Znakow: %d\n\n",znakow);

  for(i=1;i<257;i++){

                     std::fprintf(h,"%d = %d\n",i,tab[i]);

                     }

  fclose(f);

  fclose(g);

  fclose(h);

  getchar();

  return 0;

}

Moim zdaniem musiałbyś otwierać pliki w trybie binarnym, ale ja ekspertem nie jestem więc lepiej poczekaj na wypowiedzi innych osób 8)

Heh. No faktycznie zadziałało:) No cóż. Jak widać jestem laik. Dzięki Ci Panie.