Funzione Arduino sscanf ()
Nella programmazione Arduino possiamo archiviare simboli, caratteri, numeri o altri dati all'interno di una stringa. Per leggere i dati da una stringa utilizziamo il sscanf () funzione; Non solo legge i dati, ma può anche archiviarli all'interno di una nuova variabile. Generalmente, nei dati di programmazione C vengono letti utilizzando Scanf () Ma usando questa funzione possiamo leggere solo i dati usando la console, se si desidera leggere un input dalla stringa o qualsiasi altro testo, viene utilizzata la funzione sscanf ().
Sintassi
Per leggere i dati da una stringa dobbiamo sapere come funziona la funzione. Di seguito è riportata la sintassi della funzione sscanf ().
int sscanf (char *data, format char *, storage_variables);Nel codice sopra, il primo argomento rappresenta l'input che contiene i dati del carattere o dell'array stringa che devono essere letti usando il formato definito nel secondo argomento. Possiamo elencare i dati disponibili in diverse variabili definendo il formato nel secondo argomento.
Parametri
Specificatori di formato
IL sscanf () La funzione utilizza diversi specificatori di formato che possono archiviare i dati in un certo modo. È un set unico di personaggi preceduti da % segno seguito da simboli di personaggi rilevanti. I seguenti simboli sono generalmente utilizzati:
Simbolo | Tipo |
S | Corda |
C | Singolo carattere |
D | Decimale int |
e, e, f, g, g | Punti galleggianti |
U | Insigned Int |
x, x | Hexadecimal num |
Valore di ritorno
Esempi
Ora che conosciamo la sintassi e il funzionamento della funzione sscanf () facciamo un esempio per capirlo meglio.
1. Leggere un elemento dello stesso tipo
Il primo esempio spiegherà come possiamo leggere un solo singolo input di tipo di dati da una stringa e archiviarlo all'interno di una nuova variabile.
Codice
void setup ()Qui in questo codice prima iniziamo la comunicazione seriale per stampare i risultati sul monitor seriale. Successivamente un array char è definito usando una variabile respingente. La durata dell'array è impostata su 10, che può variare di conseguenza. Viene inizializzata una nuova variabile che memorizzerà il numero totale di input letti.
Poi usando il sscanf () La stringa di funzione verrà memorizzata all'interno di una nuova variabile input_string. Qui in sscanf () utilizziamo il formato specificatore %S Perché leggerà solo le stringhe come input. Entrambi i risultati saranno stampati sul monitor seriale.
Produzione
L'output mostra che una stringa viene presa come input e memorizzata all'interno di una nuova variabile input_string.
2. Leggendo più elementi di diversi tipi
Questo esempio spiegherà come sscanf () prenderà i dati di più tipi di dati da una singola stringa di input.
Codice
void setup ()Nel codice sopra abbiamo creato a dati variabile che può archiviare la stringa data. Tre diverse date variabili, anno e mese memorizzeranno l'input di lettura dalla stringa separatamente. mese La variabile è inizializzata con dimensioni di 10 che può essere modificata di conseguenza.
Prossimo sscanf () La funzione leggerà i dati dall'input e li memorizzerà in tre diverse variabili. Come data e anno rappresentano entrambi un valore intero così %D il simbolo viene usato insieme al numero 2 e 4 che rappresenta quanti numeri vogliamo leggere. IL %S il simbolo viene utilizzato con il mese che restituirà i caratteri fino a quando non arriva uno spazio bianco.
Se non c'è spazio tra i dati, allora possiamo usare %C insieme a un numero che rappresenterà il numero di caratteri che vogliamo leggere. Tutti i dati letti verranno stampati separatamente utilizzando Seriale.println ().
Produzione
L'output mostra la stringa di input. Sscanf () leggerà i dati e li memorizzerà in tre variabili separate.
Conclusione
In generale, mentre la programmazione in linguaggio C leggiamo l'input dall'utente utilizzando la funzione scanf (), ma è limitata alla console. Per leggere i dati da una stringa definita e archiviarli separatamente in più variabili che utilizziamo sscanf () funzione nella programmazione Arduino. Questo articolo ti aiuterà a capire sscanf () e leggere i dati da stringhe definite.