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 :)
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.
Lass mich ein paar Worte sagen