Zum Inhalt springen

Eingabe mit txt datei vergleichen


Empfohlene Beiträge

Geschrieben

hallo

und zwar hab ich mal ne frage zur c programmierung. Wie kann ich die Eingabe mit einer txt datei vergleichen. Es handelt sich hierbei um ein login in einer doppelt verketteten liste

Geschrieben

void main()			//*write+Ausgabe

{

	FILE *ziel;

	struct nutzer *zeiger;


	ziel=fopen("nutzer.txt","r");

	if(NULL==ziel)

	{

		fprintf(stderr,"Datei nutzer.txt kann nicht geöffnet werden!\n");

		exit (0);

	}

	zeiger=anfang;

		while(zeiger!=NULL)

		{

			printf ("Bitte geben Sie folgendes ein, um sich erfolgreich anzumelden!\n");

			printf ("Vornamen:\n");

			scanf("%s",strcmp vorname);

			printf ("Nachname:\n");

			scanf("%s",strcmp nachname);

			printf("Kontonummer:\n");

			scanf("%s",strcmp kontonummer);

			printf("Passwort:\n");

			scanf("%s",strcmp passwort);

			if(strcmp(char vorname,char nachname,char kontonummer,char passwort)==0)

			{

				printf ("Sie haben sich erfolgreich eingeloggt\n");

			}

			fprintf(ziel,"%s|%s|%s|%s\n", zeiger->vorname,zeiger->nachname,zeiger->kontonummer,zeiger->passwort);

			zeiger=zeiger->next;

		}

		fclose(ziel);

}


so?

Geschrieben
Weil du dich durch eine verkette Liste hangelst, in der nichts drin steht.

... was heißt denn ich hangel mich durch?

Und weil du nicht aus der Datei liest, sondern in die Datei schreibst.

ziel=fopen("nutzer.txt","r");

das heißt doch das ich sie öffne um aus ihr zu lesen

Geschrieben
... was heißt denn ich hangel mich durch?
Du läufst über den next-Zeiger von Eintrag zu Eintrag. Das wäre ja auch nicht falsch, wenn denn in der Liste irgendwas drin wäre.

ziel=fopen("nutzer.txt","r");

das heißt doch das ich sie öffne um aus ihr zu lesen

Mag ja sein, aber du tust es leider nicht. Statt dessen versuchst du, mit fprintf in die Datei zu schreiben.
Geschrieben
Du läufst über den next-Zeiger von Eintrag zu Eintrag. Das wäre ja auch nicht falsch, wenn denn in der Liste irgendwas drin wäre.

also ich weiß nich irgendwie versteh ich da was falsch .. ich hab die liste erstellt mit vorname,nachname,kto,passwort .. und dann zeige ich immer mit dem next zeiger drauf

Mag ja sein, aber du tust es leider nicht. Statt dessen versuchst du, mit fprintf in die Datei zu schreiben.

fprintf is doch nur zur ausgabe da oder?

Geschrieben

Hallo,

ich glaube, wir sollten das Ding mal von einer anderen Seite betrachten:

1. Was passiert bei einem Login?

Gespeicherter Name und gespeichertes Passwort werden mit dem eingegebenen Namen und dem eingegebenen Passwort verglichen. Sind beide Vergleiche i.O., wird der Zugang freigegeben.

2. Was passiert bei mehreren Leuten?

a). Suche die Person, für die eingegebener Name gleich gespeicherter Name ist.

B). Vergleiche Passwort der gespeicherten Person mit eingegebenem Passwort.

3. Dabei gibt es zwei Möglichkeiten

aa) die Anzahl der Personen ist bekannt. Die Personen werden als Sammlung/Feld/array gespeichert

bb) die Anzahl der Personen ist unbekannt. Die Personen sind als Liste gespeichert.

Das bedeutet für die Funktion des Programmes:

1. Lese die bekannten Personen von der Datei und speichere sie in einer Liste

2. Lese Zugangsdaten von Tastatur

3. Suche Person in gespeicherter Liste ( das ist der Zweck der Liste)

4. Vergleiche Passwort

5. Zeige Daten an.

as war's schon.

Geschrieben
also ich weiß nich irgendwie versteh ich da was falsch .. ich hab die liste erstellt mit vorname,nachname,kto,passwort .. und dann zeige ich immer mit dem next zeiger drauf
Ich sehe in deinem Code keine Liste. Deine struct nutzer stellt nur einen einzigen Eintrag in deiner Liste dar. Erst wenn du tatsächlich mehrere davon anlegst (malloc) und aneinander hängst, kannst du von einer Liste sprechen. Davon ist in deinem Code aber nichts zu sehen.

fprintf is doch nur zur ausgabe da oder?
fprintf schreibt in eine Datei, wobei der Dateibegriff hier sehr weit gefasst ist. Du sollst aus der Datei lesen.

Ganz ehrlich: Du hast massive Lücken bei den Grundlagen. Die musst du erst aufarbeiten. Ich kann dir garantieren, dass dein Programm nicht fertig wird, solange du ohne Sinn und Vestand daran herumprobierst. Du kannst dich nicht langsam durch Trial&Error an das richtige Programm heranarbeiten, weil ein richtiges Programm komplett anders aussehen kann als ein fast richtiges.

Die strcmps zum Beispiel hast du wild über den Code verteilt, offenbar nach dem Prinzip "viel hilft viel". Aber so wird das nichts. Beim Programmieren musst du wissen, was du tust.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...