Gebe ich als Pfad aber so etwas an "~/ffconfig.txt" (wir nehmen jetzt an, dass dieser Pfad und die Datei tatsächlich unter /home/user/config.txt existiert), liefert die fopen Funktion trotzdem immer NULL zurück, auch wenn die Datei bereits existiert, da es anscheinend mit dem ~ nichts anfangen kann.
~ wird von der Shell in der Kommandozeile durch den Inhalt von $HOME ersetzt (wie vieles anderes), genau das wirst Du auch machen müssen. Sicherlich wird Dich in diesem Zusammenhang getenv() brennend interessieren.