Problem "podwójnego znaku" w c++

0

Witam,

mam pytanie dotyczące mojego programu - tytułowy problem "podwójnego znaku". Na czym to polega??

W moim kodzie:

...
 
 while(feof(tmp))
 {
  fscanf(tmp,"%c",&znak);
  fprintf(docelowy,"%c",znak);
 }
 fflush(docelowy);
 fclose(tmp);
 fclose(docelowy);
}

I wszystko działa. I nie narzekałbym na nic, gdyby nie fakt, że jeżeli mam w pliku z którego odczytuję tekst:
"gesla jazn"
to w drugim pliku mam
"gesla jaznn"

Próbowałem przypisać do zmiennej znak wartość NULL, ale kiedy program działa, to występuje błąd, albo widać ten znak (np. w notatniku w Viscie pisze po prostu NULL). Jak można pozbyć się tego ostatniego znaku?? Dzięki za pomoc

0

flaga EOF zapala się po próbie czytania za plikiem, a nie po przeczytaniu całego pliku:

// przeczytano wszystko - ale tutaj jeszcze nie ma EOF
while(feof(tmp))
{
  // więc pętla poszła. tu nie ma EOF, czytamy...
  fscanf(tmp,"%c",&znak);
  // i jesteśmy za końcem - tu eof już jest

  // ale ty tego nie sprawdzasz, piszesz znak, mimo, że nowego nie wczytano
  fprintf(docelowy,"%c",znak);
}

spróbuj tak:

// dopóki udało się wczytać zmienną...
while( 1 == fscanf(tmp,"%c",&znak) )
{
  // to pisz
  fprintf(docelowy,"%c",znak);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1