Ich will Dir ja nicht die Freude am Lenen nehmen ;-), daher erstmal nur ein paar Tipps:
1. Dateien öffnen: schau Dir mal die stream-Klassen an, für Deinen Zweck speziell istream, wenn Du C++ programmierst. Für C gibt es die Funktion open(...), die Dir ein Filehandle zurückgibt, das Du beim Lesen mit der Funktion read(...) angibst. Die Anzahl der zeichen in einer Textdatei ist gleich der Größe der Datei (natürlich incl. Leerzeichen, Tabs usw.).
2. Wörter zählen: Vorne anfangen, Wortzähler = 0, Zeichen für Zeichen einlesen. Beim ersten Zeichen den Wortzähler um 1 erhöhen, ein Flag setzen, daß das wort schon gezählt ist, Zeichen für Zeichen weiterlesen, wenn das gelesene Zeichen ein Leerzeichen oder ein Tab ist, das Flag zurücksetzen und beim nächsten Buchstaben wieder Wortzähler um 1 erhöhen und Flag setzen.
3. Häufigkeit der Buchstaben: Du erstellst ein int-Array mir 256 Elementen und initialisierts es mit 0. Dann leist Du die Datei Zeichen für Zeichen. Da jedes Zeichen durch seinen ASCII-Wert repräsentiert wird, kannst Du mit 'intarray[zeichen]++' das entsprechende Arrayelement hochzählen. Am Ende stehen im Array die Anzahlen aller möglichen Zeichen.
4. Häufigkeit der Wörter: Das ist schon etwas aufwändiger, ich würde das mit einer sogenannten 'Map' machen, das ist eine Liste von Wertepaaren. Das erforderliche wertepaar wäre hier ein 'string' für das Wort und ein 'int' für die Anzahl. Du erstellst ein struct (oder eine Klasse) mit den 2 Members, dann eine Liste dieser structs. Wenn Du ein Wort eingelesen hast, schaust Du nach, ob es schon in der Liste ist. Wenn nein, dann legst Du ein Neues Listenelement an, mit dem Wort im string-Member und er Anzahl 1. Wenn ja, dann erhöhst Du den Zähler des Listenelementes um 1.
Was jetzt die konkrete Implementierung angeht, hängt das stark davon ab, ob Du in C oder C++ programmierst, wie man schon im Punkt 1 sieht. So, jetzt viel Spaß beim Programmieren, wenn was nicht klappt, erst suchen und probieren, wenn Du es dann immer noch nicht hinkriegst, wieder fragen.