Bearbeiten: Für meine Klasse muss ich verwenden scanf
. Das Empfehlen anderer Eingabemöglichkeiten ist also nicht die Lösung, nach der ich suche (falls es eine gibt, die scanf beinhaltet).
Wenn ich Benutzereingaben für ein kleines Projekt (z. B. ein Spiel) einlese. Nehmen wir an, ich frage would you like to play?
Dies würde eine akzeptieren yes
oder no
Antworten. Also schreibe ich einen einfachen Code wie diesen:
#include <stdio.h>
int main(void)
{
char string[3]; //The max number of letters for "yes".
printf("Would you like to play?");
scanf("%s", string);
}
Dieser Code sollte sie also einfach zur Eingabe auffordern yes
oder no
. Ich stelle die Länge meiner ein char array
messen 3
. Auf diese Weise ist es groß genug, um es zu halten yes
und auch no
. Aber wenn jemand ungültige Eingaben wie z yesss
, ich weiß, wie man die Zeichenfolge danach vergleicht, um ein solches Ereignis zu behandeln, aber würde dies nicht technisch/möglicherweise andere lokale Variablen überschreiben, die ich deklariert habe, weil es die Länge meines Arrays überschreiten würde? Wenn ja, gibt es eine Möglichkeit, damit umzugehen, um 3 Eingabezeichen oder so etwas einzuschränken? Und wenn nicht, warum/woher weiß es, dass nur die Größe 3 eingegeben werden soll?
Wahrscheinlich sicherer, es Zeichen für Zeichen zu tun. Ich bin mir nicht sicher, ob C irgendetwas hat, das dies für Sie erledigt.
– Chris
6. September 2012 um 18:55 Uhr
Können Sie erklären, wie das geht? Würde ich einfach ein paar “%c”-Sachen in “scanf” machen und wie würde ich sie dann einem Zeichen des Arrays zuweisen? [i.e. would I need &string[0] oder so]. Und wenn sie “nein” eingeben, würde ich nur 2 der 3 “%c” verwenden.
– MrHappyAsthma
6. September 2012 um 18:57 Uhr
Wenn Sie es selbst tun, um eine beliebige Länge zu handhaben, müssen Sie ein Array erstellen, dessen Größe sich zur Laufzeit ändern kann, und Zeichen aus der Eingabe einfügen, sobald sie kommen, während Sie sicherstellen, dass das Array nicht überläuft. Zum Glück, so scheint es
scanf
hat die Funktion eingebaut.– Chris
6. September 2012 um 18:59 Uhr