Menu
Coddy logo textTech

Verwendung von strcmp()

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 18 von 63.

Sie haben gelernt, wie man Zeichenketten mit strcat() verbindet, aber was ist, wenn Sie feststellen müssen, ob zwei Zeichenketten genau denselben Text enthalten? In C können Sie den Gleichheitsoperator (==) nicht verwenden, um Zeichenketten zu vergleichen, da er nur Speicheradressen vergleicht, nicht den tatsächlichen Inhalt.

Die Funktion strcmp() aus der Bibliothek <string.h> löst dieses Problem, indem sie zwei Zeichenketten Zeichen für Zeichen vergleicht. Sie führt einen sogenannten lexikographischen Vergleich durch – im Wesentlichen werden Zeichenketten in alphabetischer Reihenfolge verglichen.

#include <stdio.h>
#include <string.h>

char word1[] = "apple";
char word2[] = "apple";
int result = strcmp(word1, word2);  // Gibt 0 zurück (Strings sind gleich)

Die Funktion strcmp() gibt drei verschiedene Arten von Werten zurück: sie gibt 0 zurück, wenn die Zeichenfolgen identisch sind, einen negativen Wert, wenn die erste Zeichenfolge alphabetisch vor der zweiten steht, und einen positiven Wert, wenn die erste Zeichenfolge alphabetisch nach der zweiten steht.

Diese Funktion ist essenziell für Entscheidungen auf der Grundlage von String-Inhalten, wie z. B. die Validierung von Benutzereingaben, das Sortieren von Textdaten oder die Implementierung von Suchfunktionen in Ihren Programmen.

challenge icon

Aufgabe

Einfach

Schreibe ein C-Programm, das mithilfe der Funktion strcmp() ein einfaches Passwortverifizierungssystem implementiert. Dein Programm soll:

  1. Eine Ganzzahl n einlesen, die die Anzahl der zu verarbeitenden Anmeldeversuche angibt
  2. Für jeden Anmeldeversuch:
    • Einen Benutzernamen aus der Eingabe einlesen
    • Ein Passwort aus der Eingabe einlesen
    • strcmp() verwenden, um den Benutzernamen mit "admin" zu vergleichen
    • strcmp() verwenden, um das Passwort mit "secret123" zu vergleichen
    • Abhängig von den Vergleichsergebnissen die entsprechende Meldung ausgeben
  3. Nach der Verarbeitung aller Versuche zählen und anzeigen, wie viele erfolgreiche Anmeldungen erfolgt sind

Die Logik zur Anmeldevalidierung soll folgendermaßen aussehen:

  • Wenn sowohl Benutzername als auch Passwort korrekt sind: „Anmeldung erfolgreich“ ausgeben
  • Wenn der Benutzername korrekt, aber das Passwort falsch ist: „Ungültiges Passwort“ ausgeben
  • Wenn der Benutzername falsch, aber das Passwort korrekt ist: „Ungültiger Benutzername“ ausgeben
  • Wenn sowohl Benutzername als auch Passwort falsch sind: „Ungültige Anmeldedaten“ ausgeben

Denke daran, den Header <string.h> einzubinden, um die Funktion strcmp() verwenden zu können.

Deine Ausgabe soll die Ergebnisse im folgenden Format anzeigen:

[Login result message]
[Login result message]
...
Total successful logins: [count]

Wenn die Eingabe beispielsweise folgendermaßen lautet:

4
admin
secret123
user
password
admin
wrong
guest
secret123

Deine Ausgabe soll folgendermaßen aussehen:

Login successful
Invalid credentials
Invalid password
Invalid username
Total successful logins: 1

Diese Aufgabe testet dein Verständnis der Verwendung von strcmp() zum Vergleichen von Zeichenketten auf Gleichheit, der Implementierung bedingter Logik auf Grundlage von Zeichenkettenvergleichsergebnissen und des Zählens von Vorkommen anhand der Vergleichsergebnisse.

Probier es selbst

#include <stdio.h>
#include <string.h>

int main() {
    int n;
    scanf("%d", &n);
    
    char username[100];
    char password[100];
    int successful_logins = 0;
    
    // TODO: Schreiben Sie hier Ihren Code
    // Verarbeiten Sie jeden Anmeldeversuch mit der Funktion strcmp()
    // Vergleichen Sie den Benutzernamen mit "admin" und das Passwort mit "secret123"
    // Geben Sie entsprechende Meldungen aus und zählen Sie erfolgreiche Anmeldungen
    
    printf("Total successful logins: %d\n", successful_logins);
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C-Compiler