was für einen Fehler übersehe ich?
Da hilft dir Debugging, entweder mit einem Breakpoint oder einfach ein printf über entsprechende Zeile schreiben und einfach mal dir ausgeben lassen, was so in username und l.username steht und ob das eben identisch ist
Vermutlich wird es nicht richtig aus der Datei ausgelesen und in das struct übertragen.
Können auch Probleme mit der Kodierung herrschen, aus diesem (und vielen weiteren Gründen), sollte man auch eine Datenbank nutzen und keine einfache Text Datei um Passwörter etc zu speichern.
Passwörter sollten grundsätzlich auch gehasht werden (hatte damals ein kleines Tutorial dazu verfasst: Hash Verfahren genauer erklärt ) und nicht im Klartext abgelegt werden (ist rechtlich sogar untersagt, siehe DSGVO)