Arduino SSCANF -Funktion

Arduino SSCANF -Funktion
Die Arduino -Programmierung hat mehrere Funktionen aus der C -Sprache geerbt. Eine der weit verbreiteten Funktionen ist SSCANF (), mit dem wir Daten aus jedem String oder Text lesen können. In diesem Handbuch werden wir untersuchen, wie diese Funktion in der Arduino -Programmierung verwendet wird. Lass uns anfangen:

Arduino Sscanf () Funktion

In der Arduino -Programmierung können wir Symbole, Zeichen, Zahlen oder andere Daten in einer Zeichenfolge speichern. Um die Daten aus einer Zeichenfolge zu lesen, verwenden wir die sscanf () Funktion; Es liest nicht nur die Daten, sondern kann sie auch in einer neuen Variablen speichern. Im Allgemeinen werden in C -Programmierdaten mit Verwendung gelesen Scanf () Mit dieser Funktion können wir jedoch nur Daten mit der Konsole lesen. Wenn man eine Eingabe aus der String oder einem anderen Text lesen möchte.

Syntax

Um Daten aus einer Zeichenfolge zu lesen, müssen wir wissen, wie die Funktion funktioniert. Unten finden Sie die Syntax der Sscanf () -Funktion.

int sscanf (char *data, char *format, storple_variables);

Im obigen Code repräsentiert das erste Argument die Eingabe, die die Zeichen- oder String -Array -Daten enthält, die unter Verwendung des im zweiten Arguments definierten Formats gelesen werden sollen. Wir können verfügbare Daten in verschiedenen Variablen auflisten, indem wir das Format im zweiten Argument definieren.

Parameter

  • Daten: Dies ist ein Zeiger auf eine Zeichenfolge, die wir lesen möchten.
  • Format: Formatspezifizierer werden hier verwendet, um Daten auf eine bestimmte Weise zu lesen.
  • Storage_variables: Es wird verwendet, um den Lesewert von Zeigern in zusätzlichen Argumenten zu speichern. Dem Variablennamen muss das & Zeichen vorangestellt werden, wenn wir Werte in einer regulären Variablen und nicht in einem Zeiger speichern müssen.

Formatspezifizierer

Der sscanf () Funktion verwendet unterschiedliche Formatspezifizierer, die Daten auf eine bestimmte Weise speichern können. Es ist ein einzigartiger Satz von Zeichen, dem % Sign anschließend relevante Zeichensymbole vorangegangen ist. Die folgenden Symbole werden im Allgemeinen verwendet:

Symbol Typ
S Saite
C Single Char
D Dezimaler int
e, e, f, g, g Schwebende Punkte
U Unsigned int
x, x Hexadezimal num

Rückgabewert

  • Der Fehler am Ende der Datei (EOF) wird zurückgegeben, wenn die Zeichenfolge keinen ordnungsgemäßen Wert lesen konnte.
  • -1 wird zurückgegeben, wenn ein anderer Fehlertyp auftritt.
  • Die Gesamtzahl der gelesenen Elemente wird von der Funktion als Ganzzahlwert zurückgegeben.

Beispiele

Jetzt, da wir die Syntax und das Arbeiten der SSCANF () -Funktion kennen, nehmen wir ein Beispiel, um sie besser zu verstehen.

1. Lesen eines Elements des gleichen Typs

Das erste Beispiel erklärt, wie wir nur eine einzelne Datentypeingabe aus einer Zeichenfolge lesen und in einer neuen Variablen speichern können.

Code

void setup ()
Serie.Beginnen Sie (115200); /*Serielle Kommunikation beginnt*/
char* buffer = "LinuxHint"; /*String wird in der Puffervariablen mit char*/initialisiert
char input_string [10]; /*Stringlänge definiert*/
int Total_input_read; /*Variable wird initialisiert, um die Gesamteingabe zu zählen. Read*/
Total_input_read = sscanf (Buffer, "%s", input_string); /*SSCANF -Funktion wird verwendet, um die Eingangszeichenfolge*/zu lesen
Serie.print ("Stringwert in Buffer gespeichert:");
Serie.println (input_string); /*Eingangszeichenfolge wird auf dem seriellen Monitor*/gedruckt
Serie.print ("Nein von Gesamtartikeln gelesen:");
Serie.println (total_input_read); /*Nein des Eingangslesens wird auf Serienmonitor ausgedruckt*/

Hohlraumschleife ()

Hier in diesem Code beginnen wir zuerst die serielle Kommunikation, um Ergebnisse auf dem Serienmonitor zu drucken. Als nächstes wird ein Char -Array unter Verwendung einer Variablen definiert Puffer. Die Länge des Arrays ist auf 10 eingestellt, was entsprechend variieren kann. Eine neue Variable wird initialisiert, wodurch die Gesamtzahl der gelesenen Eingänge gespeichert wird.

Als nächstes mit dem sscanf () Funktionszeichenfolge wird in einer neuen Variablen gespeichert input_string. Hier in Sscanf () verwenden wir einen Formatspezifizierer %S Weil es nur Saiten als Eingabe liest. Beide Ergebnisse werden auf dem Serienmonitor gedruckt.

Ausgang

Die Ausgabe zeigt, dass eine Zeichenfolge als Eingabe genommen und in einer neuen Variablen gespeichert wird input_string.

2. Lesen Sie mehrere Elemente verschiedener Typen

In diesem Beispiel wird erklärt, wie SSCANF () Daten von mehreren Datentypen aus einer einzelnen Eingabezeichenfolge entnimmt.

Code

void setup ()
Serie.Beginnen Sie (115200); /*Serielle Kommunikation beginnt*/
char *data = "28 Feb 2022"; /*Eine neue Zeichenfolge wird initialisiert*/
int Datum = 0; /*Variable ist definiert, um Datum zu speichern*/
int Jahr = 0; /*Variable ist definiert, um das Jahr zu speichern*/
Char -Monat [10]; /*Ein Array wird initialisiert, um den Monat zu speichern*/
Serie.println (Daten); /*Eingabedaten werden gedruckt*/
SSCANF (Daten, " %2d %S %4d", & Datum, Monat & Jahr); /*SSCANF liest Daten aus der Eingabe und speichert sie in separaten Variablen*/
Serie.println (Datum); /*Lesedatum wird gedruckt*/
Serie.println (Monat); /*Lesenmonat ist gedruckt*/
Serie.println (Jahr); /*Read Year wird gedruckt*/

void Loop ()

Im obigen Code haben wir a erstellt Daten Variable, die die angegebene Zeichenfolge speichern kann. Drei verschiedene Variablendaten, Jahr und Monat speichern die Leseeingabe aus der Zeichenfolge separat. Monat Variable wird mit einer Größe von 10 initialisiert, die entsprechend geändert werden kann.

Nächste sscanf () Die Funktion lesen die Daten aus der Eingabe und speichern sie in drei verschiedenen Variablen. Als Datum und Jahr sind beide einen Ganzzahlwert so %D Symbol wird zusammen mit Nummer 2 und 4 verwendet, was darstellt, wie viele Zahlen wir lesen möchten. Der %S Symbol wird mit Monat verwendet, der Zeichen zurückgibt, bis ein Weißraum kommt.

Wenn es keinen Platz zwischen den Daten gibt, können wir verwenden %C zusammen mit einer Nummer, die die Anzahl der Zeichen darstellt, die wir lesen möchten. Alle gelesenen Daten werden separat verwendet Serie.println ().

Ausgang

Die Ausgabe zeigt die Eingangszeichenfolge an. SSCANF () lesen Daten und speichern sie in separaten drei Variablen.

Abschluss

Im Allgemeinen lesen wir während der Programmierung in der C -Sprache die Eingabe vom Benutzer mithilfe von Scanf () -Funktion, aber nur auf die Konsole beschränkt. Lesen Sie Daten aus einer definierten Zeichenfolge und speichern Sie sie separat in mehreren von uns verwendeten Variablen sscanf () Funktion bei der Arduino -Programmierung. Diese Beschreibung hilft Ihnen beim Verständnis sscanf () und Daten aus definierten Zeichenfolgen lesen.