Wie kann eine Fehlermeldung angezeigt werden, wenn ein Name in einer Datei in C nicht verfügbar ist?

Sarmad Khalil

So gelang es mir, eine Lösung zu codieren oder Namen in Dateien zu finden, um die Anmeldung zu validieren. Wenn die ID in der Datei vorhanden ist, erlaubt das Programm dem Benutzer, weiterzugehen. Aber das Problem ist, wenn der Benutzer keinen registrierten Namen eingibt, stürzt der Code einfach ab, da es keine Möglichkeit gibt, eine Fehlermeldung einzufügen. Hier ist der Code:

void loginadmin()
{
    FILE *fp = fopen("C:\\Users\\khali\\Desktop\\C programming project\\admin.txt", "r");
    char loginID [200];
    char password [200];
    char name[200];

    printf("Please enter your login ID below\n");
    scanf("%s", &loginID);

    while (!feof(fp))
    {
        fgets(name, 200, fp );
        if (strncmp(name, loginID, strlen(loginID)) == 0)
        {
            printf("\nWelcome %s", name);
        }

    }
    fclose(fp);
}

Jetzt in diesem Code der Teil:

while (!feof(fp))
        {
            fgets(name, 200, fp );
            if (strncmp(name, loginID, strlen(loginID)) == 0)
            {
                printf("\nWelcome %s", name);
            }

        }
        fclose(fp);
    }

Ich habe es so geschrieben, dass es jede Zeile in der Datei las, Gültigkeit zeigte und dann mit der nächsten Zeile fortfuhr:

while (!feof(fp))
        {
            fgets(name, 200, fp );
            if (strncmp(name, loginID, strlen(loginID)) == 0)
            {
                printf("\nWelcome %s", name);
            }
            else;
            {
                printf("\nWrong input");
            }
        }
        fclose(fp);
    }

Kann mir jemand helfen, die Validierung richtig zu setzen, damit der Code nur einmal die Validierungszeile anzeigt und den Code nicht immer wieder ausführt und die Gültigkeit des Codes immer wieder ausdruckt, bis der richtige Name erreicht ist, und auch um den Benutzern einen anderen zu geben? Versuchen Sie es, anstatt den Code noch einmal auszuführen. Prost :)

MartinaW

Ich ändere Ihren Code so, dass der Benutzer nach einer Login-ID gefragt wird, bis eine gültige ID gefunden wurde oder der Benutzer einen leeren String eingibt. Wenn eine gültige Login-ID gefunden wurde, wird die Schleife nicht fortgesetzt. Sehen Sie sich den Code oben an und lesen Sie die Kommentare:

FILE *fp =
   fopen("C:\\Users\\khali\\Desktop\\C programming project\\admin.txt", "r");
char loginID [200];
char password [200];
char name[200];
int found = 0; // will become 1 if the login ID was found
while (fp && !found) {
    printf("Please enter your login ID below\n");
    scanf("%s", &loginID);
    if ( loginID[0] == 0 ) { // test if the inut is an empty string and break
      break;
    }
    fseek(fp, 0, SEEK_SET); // start every search at the beginning of the file
    while (!found && !feof(fp)) { // test if found or end of file
        fgets(name, 200, fp );
        if (strncmp(name, loginID, strlen(loginID)) == 0) {
            found = 1; // the name was found and we are finished
            printf("\nWelcome %s", name);
        }
    }
}
if (fp) {
    fclose(fp);
}

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    Glassfish v3.0.1 im Vergleich zu Oracle GlassFish Server 3.0.1 - Gibt es einen technischen Grund, die kommerzielle Version zu verwenden?

  2. 2

    Wie schließe ich mehrere Ordner mit der Variablen EXTRA_ARGS aus?

  3. 3

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  4. 4

    Modbus Python Schneider PM5300

  5. 5

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  6. 6

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  7. 7

    Wie füge ich eine Spalte in einer Zeile in der Ansible Jinja2-Vorlage mit der for-Schleife hinzu?

  8. 8

    ElasticSearch - Knotensperren konnten nicht abgerufen werden

  9. 9

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  10. 10

    Wie vergleicht man scala.xml-Knoten richtig?

  11. 11

    Wie kann man eine Multi-Container-Anwendung in Steuerkarten erstellen?

  12. 12

    Wie Verwenden von Httpclient mit jedem SSL-Zertifikat, egal wie „schlecht“ es ist

  13. 13

    HTTPS-Verbindung mit Moneris-Servern in Curl

  14. 14

    Elasticsearch startet nicht nach dem Laden in viele Daten

  15. 15

    Schneller Algorithmus zum Suchen nach Teilzeichenfolgen in einer Zeichenfolge

  16. 16

    So übergeben Sie eine Variable in json, um Daten zu erhalten

  17. 17

    Hervorheben der SQL-Syntax in Visual Studio 2017

  18. 18

    Unterschied zwischen einfachen und doppelten Anführungszeichen in Javascript

  19. 19

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  20. 20

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  21. 21

    Bester Crawler, um festzustellen, ob er mit Technologien gebaut wurde?

heißlabel

Archiv