Ich versuche ein Programm zu erstellen, das einen Benutzer auffordert, seinen Namen einzugeben. Wenn er stattdessen die Nummer angibt, möchte ich, dass das Programm den Benutzer erneut abfragt, bis er Zeichen als Namen eingibt.Der Benutzer muss erneut abgefragt werden, wenn er Ziffern eingibt und keine Buchstaben
sollte es in etwa so aussehen:
char name[50];
printf("What is your name? ");
scanf("%s", name);
printf("Hello there, %s\n", name);
In der vor allem gut ist, aber es nicht erkennt, wenn Sie Eingangsnummer Ziffern. Ich möchte den Benutzer in dem Fall wiederholen, wenn er Zahlen eingibt und nur Buchstaben akzeptiert
Ich habe den folgenden Code gemacht, aber offensichtlich funktioniert nicht. Ich würde deine Hilfe sehr schätzen. Erinnere dich einfach ... halte es einfach!
int main()
{
char name[50];
int age, agenext, id, idnext = 0;
//PROMT USER TO INPUT NAME
printf("\nPlease enter your name:\n");
scanf("%s", &name);
while (isdigit(name))
{
printf("wrong input try again");
}
printf("Your name is %s ",name);
return 0;
Willkommen bei Stackoverflow! Ich habe das C-Tag hinzugefügt. Wenn das nicht stimmt, bitte bearbeiten Sie es. Außerdem sollten Sie Ihre Frage so bearbeiten, dass sie genau angibt, was Ihr Problem ist. Ist das Problem, dass Sie versuchen, "isdigit" auf alle Elemente von 'name' anzuwenden? Beachten Sie auch, dass, wenn Sie die Bedingung behoben haben, Ihre "while" -Schleife für immer iterieren wird, da es keine Möglichkeit gibt, 'name' wieder einzugeben. – C8H10N4O2
Auch ich sollte am Anfang in C sein, also muss die Lösung einfach sein das: char name [50] ... printf ("Wie heißt du?"); scanf ("% s", Name); printf ("Hallo da,% s \ n", Name); – VAPORAS
beim Aufruf einer der 'scanf()' -Familien von Funktionen: 1) überprüfe immer den zurückgegebenen Wert (nicht den Parameterwert), um sicherzustellen, dass der Vorgang erfolgreich war. 2) Platziere ein führendes Leerzeichen in der Formatzeichenfolge, um jeden führenden Leerraum zu verbrauchen. 3) Verwenden Sie bei Verwendung des Formatbezeichners '% s' immer einen Modifikator für die maximale Länge, der um eins kleiner ist als die Eingabepufferlänge, um ein Überlaufen des Eingabepuffers durch den Benutzer zu vermeiden. Dies führt zu einem undefinierten Verhalten, das zu einem Segmentfehler führen kann . Anmerkung: 1 weniger, weil bei '% s', 'scanf()' immer ein NUL-Byte angehängt wird. – user3629249