Wie können wir überprüfen, ob der Benutzer i/p ist korrekt durch AC-Code .. für ex fragen wir Name und Alter von Benutzer i/p, was sollte die Syntax für überprüfen, ob die eingegebenen Daten sind korrekt oder nicht? Der Code sollte in CÜberprüfen Sie auf korrekte Benutzereingabe
Antwort
Für den Namen, speichern Sie die Benutzereingabe in einer Zeichenfolge. Durchqueren Sie die Zeichenfolge und sagen Sie einen Fehler, wenn die Array-Elemente nicht "a" zu "z" oder "A" zu "Z" sind. Wenn Alter berücksichtigt wird, können Sie char Array oder Integer verwenden. Bei der Verwendung von Integer, wenn ein Benutzer 'a' eingibt, wird der ASCII-Wert davon verwendet. Aber wenn Sie Char-Array verwenden, können Sie nur für Ziffern und mit einem Limit sehen.
int main()
{
char name[10],age[2];
int i;
printf("Enter name and age \n");
scanf("%s %s",name,age);
for(i=0; name[i]!=NULL; i++)
if(isdigit(name[i]))
printf("Error, name in aplahbets\n");
for(i=0; age[i]!=NULL; i++)
if(isalpha(age[i]))
printf("Error, age in numbers\n");
// Rest of your code Your code
return 0;
}
könnten Sie bitte erklären durch Syntax .. – kamakshi
Danke für die Unterstützung ... – kamakshi
Ihre Lösung stürzt für Namen mehr als 9 Zeichen,! = NULL ist auch diffus. – user411313
Alter ist in der Regel eine natürliche Zahl von 0 bis 130 reich Je nach Anwendung, ein realistischeres Bereich könnte 15 sein bis 65. Werfen Sie einen Blick auf Ihre Anforderungen.
int IsNaturalNumber(const char* number)
{
while(*number) {
if(!isdigit(*number))
return 0;
++number;
}
return 1;
}
char age[20+1] = { 0 };
if(!fgets(age, 20, stdin)) error("EOF reached!");
if(!IsNaturalNumber(age)) error("Please enter a natural number!");
int age_as_int = atoi(age);
if(age_as_int < LOWER_AGE_BOUND || age_as_int > UPPER_AGE_BOUND)
error("Age must be between %d and %d.", LOWER_AGE_BOUND, UPPER_AGE_BOUND);
Namen sind knifflig. Was ist ein Eigenname? Eine häufig verwendete Form ist Anrede (Herr/Frau/Miss), Vorname und Nachname/Nachname. Dies deckt viele Kulturen ab. Vergessen Sie nicht, die Sprache zu berücksichtigen. Herr = Herr, Frau = Frau, Fräulein = Fräulein auf Deutsch zum Beispiel. Auch bevorzugen manche Kulturen Familiennamen vor dem Vornamen in Formularen (zB Japan). Was sind Ihre Anforderungen? Musst du alle Kulturen oder nur wenige in Betracht ziehen?
Ich werde nur einen einfachen Namen (Vor- und Nachname) in Erwägung ziehen, jetzt bin ich nicht einschließlich Begrüßung .. – kamakshi
Was ist "Isdigit" hier ?? – kamakshi
@kamakshi: isdigit ist eine Funktion aus der C-Standardbibliothek, die prüft, ob das angegebene Zeichen eine numerische Ziffer darstellt, d. H. Zeichen im Bereich '0' ... '9' – datenwolf
Die gängige Methode zur Eingabeüberprüfung besteht darin, die Eingabe als Zeichenfolge in das Programm einzulesen und anschließend zu validieren und in den erwarteten Typ zu konvertieren.
Für Namen gibt es nicht viel nützliche Validierung, die Sie tun können. Sie können (und sollten) überprüfen, ob die Eingabe Ihre Erwartungen nicht überschreitet, ansonsten sollten die meisten Eingaben als gültiger Name betrachtet werden.
Für das Alter gibt es viel mehr Validierung, die Sie tun können. Erstens muss die Eingabe eine gültige Ganzzahl sein und zweitens muss sie innerhalb eines bestimmten Bereichs liegen.
Sie können folgende Funktionen zur Verfügung:
char* readString(char* buffer, size_t buflen)
{
char* result;
result = fgets(buffer, buflen, stdin);
if ((result != NULL) &&
(strlen(result) == buflen-1) &&
(result[buflen-2] != '\n'))
{
/* too long a line */
/* read the remainder of the line, to clear the input buffers */
while ((result != NULL) && (result[strlen(result)-1] != '\n'))
{
result = fgets(buffer, buflen, stdin);
}
/* set result to NULL to indicate an error */
result = NULL;
}
if (result != NULL)
{
/* strip the newline */
result[strlen(result)-1] = '\0';
}
}
bool readInt(int low, int high, int* value)
{
char temp[80];
if (readString(temp, 80))
{
char* endp;
long result = strtol(temp, &endp, 10);
if ((*endp == '\0') && (result >= low) && (result <= high))
{
*value = result;
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
Ohne Altersüberlauf/Unter eine kurze Lösung überprüfen könnte:
char name[40];
unsigned age;
if(scanf("%39s%u",name,&age)==2)
printf("name=%s age=%u",name,age);
else
puts("input invalid");
Sie sollten jemals Check die Erträge von jedem Benutzer -Eingänge.
- 1. Überprüfen der Benutzereingabe auf ungültige Zeichen
- 2. Überprüfen Sie, dass die Benutzereingabe eine 5-stellige Nummer ist
- 3. Benutzereingabe zu überprüfen, ob es zwei Bedingungen
- 4. Überprüfen, ob die Benutzereingabe alphabetisch ist
- 5. Überprüfen, ob Benutzereingabe eine leere C++
- 6. Ausgewählte Antworten auf korrekte Antwort in Quiz in pHP überprüfen
- 7. Korrekte Struktur zum Überprüfen auf Fehler mit NSError
- 8. Warten auf Benutzereingabe
- 9. Filterdatenbereich basierend auf Benutzereingabe
- 10. Überprüfen Sie auf Speicherleck
- 11. Einfügen von Zeilenumbrüchen auf Benutzereingabe
- 12. Eclipse-Abstürze auf der Benutzereingabe
- 13. Bash RegEx, um Gleitkommazahlen von Benutzereingabe zu überprüfen
- 14. Javascript Multiplikationstabelle basierend auf Benutzereingabe
- 15. Formularfelder basierend auf Benutzereingabe anzeigen
- 16. Programm wartet nicht auf Benutzereingabe
- 17. Nehmen Sie eine Benutzereingabe bestätigen Sie es
- 18. VBScript: Überprüfen, ob die Benutzereingabe eine Ganzzahl ist
- 19. Wie Benutzereingabe Befehlszeile
- 20. So erstellen Sie dynamische CSS basierend auf Benutzereingabe
- 21. Python: Speichern Sie eine Datei basierend auf Benutzereingabe
- 22. Wählen Sie Daten aus DB basierend auf Benutzereingabe
- 23. Ruby Debugger schlägt auf STDIN.gets Benutzereingabe
- 24. Korrekte Art zu überprüfen, ob Threads ausgeführt werden?
- 25. Klassenmethode für Benutzereingabe
- 26. korrekte Art und Weise zu unterzeichnen und überprüfen Signatur bouncycastle
- 27. Benutzereingabe speichern
- 28. Erstellen eines Zählers basierend auf Benutzereingabe
- 29. Überprüfen Sie, ob die Benutzereingabe eine gültige Zeichenfolge ist oder nicht C
- 30. Do-while-Schleife wartet nicht auf Benutzereingabe?
Dies ist die Fehlermeldung, aber wie werden wir überprüfen, ob die i/p-Daten korrekt sind oder nicht .. was wird die Syntax dafür sein .. – kamakshi
Meine eingebaute Verifikation sagen Sie mir Ihre Eingabe oben ist definitiv falsch (fehlt groß Buchstaben, fehlende Interpunktion). Wenn Sie nicht möchten, dass die Frage mit einer richtigen Sprache geschrieben wird, wie erwarten Sie dann, dass jemand sich darum kümmert, eine Antwort zu schreiben? – Suma