Ich bin neu in c, und ich bin mir nicht sicher, wie diese Frage zu formulieren. Aber zum Beispiel mit diesem Code:Wie vermeidet man Benutzereingaben mit zwei scanf?
#include <stdio.h>
int main()
{
int x,y,z;
printf("Enter 2 numbers: ");
scanf("%d %d", &x, &y);
printf("Test: ");
scanf("%d",&z);
printf("x:%d y:%d z:%d\n",x,y,z);
return 0;
}
Wenn der Benutzer der Eingänge "1 2 3", wäre es x = 1, y = 2 und z = 3. Ich habe mich gefragt, ob du x = 1 und y = 2 setzen und 3 ignorieren kannst, dann kann der Benutzer einen anderen Wert eingeben und nicht die 3, die vorher gegeben wurden, benutzen.
Sie können den Eingang nach dem ersten scanf spülen. [Siehe hier] (http://stackoverflow.com/questions/7898215/how-to-clear-input-buffer-in-c). –
Sie können ['fgets()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html) (oder POSIX ['getline()'] (http: //pubs.opengroup) verwenden .org/onlinepubs/9699919799/functions/getline.html)) um eine Zeile zu lesen und dann mit ['sscanf()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/sscanf.html) anstelle von 'scanf()'. Dies ist oft eine bessere Möglichkeit, Daten zu verarbeiten. Sie können Fehler besser melden und alternative Möglichkeiten zum Scannen der Daten ausprobieren, wenn das erste Format nicht funktioniert. –
Stimmen Sie völlig mit @ JonathanLeffler überein: Sie sollten 'fgets()' verwenden, um eine Zeile zu erhalten, dann 'sscanf() ', um es sorgfältig zu verarbeiten (die Rückgabewerte von diesen Funktionen natürlich überprüfen). –