Benutzereingabe in C abrufen

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Funktion scanf, um Benutzereingaben gemäß dem vorgegebenen Format in C zu erhalten
  2. Verwenden von scanf Parsen von Benutzereingaben basierend auf der gegebenen Formatierung
Benutzereingabe in C abrufen

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'
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Verwandter Artikel - C IO