Podejście naiwne to iterowanie znak po znaku czytając go z pliku i zliczanie znaków w liczniku. Funkcje niezbędne to:
fopen, fclose, getc
Nieco lepsze (i szybsze) to otworzenie pliku, ustawienie kursora pliku na koniec i przeczytanie pozycji. Funkcje niezbędne to:
fopen, fclose, fseek, ftell
Powstaje jeszcze pytanie "co to jest znak". Bo jeśli masz na myśli konkretną klasę (litery, liczby, znaki białe...), to niestety wariant pierwszy z detekcją co jest znakiem będzie odpowiedni.