Benutzereingabe in C abrufen
-
Verwenden Sie die Funktion
scanf
, um Benutzereingaben gemäß dem vorgegebenen Format in C zu erhalten -
Verwenden von
scanf
Parsen von Benutzereingaben basierend auf der gegebenen Formatierung
Dieser Artikel demonstriert mehrere Methoden, wie man die Benutzereingabe in C abrufen kann.
Verwenden Sie die Funktion scanf
, um Benutzereingaben gemäß dem vorgegebenen Format in C zu erhalten
Die Funktion scanf
verarbeitet die Benutzereingabe als formatierten Text und speichert den konvertierten String-Wert im angegebenen Zeiger. Der Funktionsprototyp ist ähnlich der printf
-Funktionsfamilie. Sie nimmt das Argument format string
als Anweisung, wie die Eingabezeichen verarbeitet werden sollen, und dann eine variable Anzahl von Zeigerargumenten, um die entsprechenden Werte zu speichern.
Beachten Sie, dass der Spezifizierer %[^\n]
den scanf
anweist, jedes Zeichen vor dem ersten Zeilenumbruchzeichen als eine Zeichenkette zu verarbeiten und im char*
-Puffer zu speichern. Der Zielpuffer sollte groß genug für die Benutzereingabezeichenkette sein. Außerdem kann ein optionales Zeichen m
in den Spezifizierern für die Zeichenkettenkonvertierung verwendet werden, das die Funktion dazu zwingt, eine ausreichende Puffergröße zum Speichern der Eingabezeichenkette zuzuweisen. Der Benutzer müsste also die Funktion free
aufrufen, nachdem der angegebene Zeiger nicht mehr benötigt wird.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf("%[^\n]", str1); // takes everything before '\n'
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Ausgabe:
Input the text: temp string to be processed
'temp string to be processed'
Alternativ können wir scanf
verwenden, um jede Texteingabe vor dem angegebenen Zeichen zu verarbeiten, indem wir den Format-String-Spezifizierer modifizieren. Das folgende Beispiel zeigt den Aufruf von scanf
, der die Benutzereingabe durchsucht, bis das erste Zeichen mit dem Wert 9
gefunden wird.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf(" %[^9]*", str1); // takes everything before '9' in string
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Ausgabe:
Input the text: temporary string 32j2 923mlk
'temporary string 32j2 '
Verwenden von scanf
Parsen von Benutzereingaben basierend auf der gegebenen Formatierung
Eine weitere nützliche Eigenschaft der Funktion scanf
ist das Parsen der Benutzereingabe basierend auf dem gegebenen Format. Das *
-Zeichen wird in der Formatzeichenkette verwendet, um die übereinstimmenden Zeichen durch den folgenden Konvertierungsspezifizierer zu verwerfen. Das nächste Codebeispiel demonstriert, wie die Funktion scanf
Texteingaben analysiert, die aus dem obligatorischen Symbol :
bestehen, und nur die Zeichen nach dem angegebenen Symbol bis zum Zeilenende speichert. Diese Option kann für das Scannen von Texten mit festem Format nützlich sein, bei denen bestimmte Zeichen an Begrenzerpositionen vorhanden sind.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf("%*[^:]%*c%[^\n]", str1);
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Ausgabe:
Input the text: temporary value of var3: 324 gel
' 324 gel'
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook