[C] Podwójne wypisywanie ostatniego znaku

Witam,

Napisałem program zamieniający znaki wczytane z pliku na bity. Ostatni znak, zawsze wypisuje się dwukrotnie

#include 

//===================================

    void zamiaNanaBity(int x){

        int i = 0;

        int tab[8];

        for (i = 0; i < 8; i++){

            tab[7-i]=x%2;

            x=x/2;

        }

        for (i = 0; i < 8; i++){

            printf("%d", tab[i]);

        }

        printf("\n");

    }

//===================================


    int main(){

        char znak;

        int zn;

       FILE * pFile;

        pFile = fopen ("plik.txt","r");

        while (!feof(pFile)){

            fscanf(pFile,"%c",&znak);

            zn = (int)znak;

            zamiaNanaBity(zn);

        }

        return 0;

    }

W plik.txt jest wpisane słowo domek. Po wykonaniu programu wynikiem jest:

01100100

01101111

01101101

01100101

01101011

01101011

A więc litera k została przetworzona podwójnie.

Jakoś nie mogę doszukać się przyczyn, może dopatrzy się ktoś z Was.

http://stackoverflow.com/questions/3549 … nt-to-file