Arduino sscanf () -funksjon
I Arduino -programmering kan vi lagre symboler, tegn, tall eller andre data i en streng. For å lese dataene fra en streng bruker vi sscanf () funksjon; Den leser ikke bare dataene, men kan også lagre dem i en ny variabel. Generelt leses i C -programmeringsdata ved hjelp av Scanf () Men ved å bruke denne funksjonen kan vi bare lese data ved hjelp av konsoll, hvis man ønsker å lese en inngang fra streng eller annen tekst, brukes SSCANF () -funksjonen.
Syntaks
For å lese data fra en streng må vi vite hvordan funksjonen fungerer. Nedenfor er syntaksen til SSCANF () -funksjonen.
int sscanf (char *data, char *format, lagring_variabler);I koden ovenfor representerer det første argumentet inngangen som inneholder karakter- eller streng -array -data som skal leses ved hjelp av formatet som er definert i det andre argumentet. Vi kan liste tilgjengelige data i forskjellige variabler ved å definere formatet i det andre argumentet.
Parametere
Formatspesifikasjoner
De sscanf () Funksjon bruker forskjellige formatspesifikasjoner som kan lagre data på en bestemt måte. Det er et unikt sett med tegn foran med % tegn etterfulgt av relevante tegnsymboler. Følgende symboler brukes vanligvis:
Symbol | Type |
s | Streng |
c | Enkelt røye |
d | Desimal int |
e, e, f, g, g | Flytende punkter |
U | Usignert int |
x, x | Heksadesimal num |
Returverdi
Eksempler
Nå som vi kjenner syntaks og arbeid med SSCANF () -funksjonen, la oss ta et eksempel for å forstå det bedre.
1. Lesing av ett element av samme type
Det første eksemplet vil forklare hvordan vi bare kan lese en enkelt datatypeinngang fra en streng og lagre den inne i en ny variabel.
Kode
void setup ()Her i denne koden først begynner vi seriell kommunikasjon for å skrive ut resultater på seriemonitoren. Neste en char -matrise er definert ved hjelp av en variabel buffer. Lengden på matrisen er satt til 10, noe som kan variere deretter. En ny variabel er initialisert som vil lagre det totale antallet inngangsinnganger.
Neste ved hjelp av sscanf () Funksjonsstreng blir lagret i en ny variabel input_string. Her i SSCANF () bruker vi formatspesifikasjon %s fordi den bare vil lese strenger som input. Begge resultatene vil bli skrevet ut på seriemonitoren.
Produksjon
Utgang viser at en streng tas som inngang og lagret i en ny variabel input_string.
2. Lesing av flere elementer av forskjellige typer
Dette eksemplet vil forklare hvordan sscanf () vil ta data om flere datatyper fra en enkelt inngangsstreng.
Kode
void setup ()I koden ovenfor har vi opprettet en data variabel som kan lagre den gitte strengen. Tre forskjellige variable datoer, år og måned vil lagre leseinngangen fra strengen hver for seg. måned Variabel initialiseres med størrelse på 10 som kan endres deretter.
NESTE sscanf () Funksjonen vil lese dataene fra input og lagre dem i tre forskjellige variabler. Som dato og år representerer begge en heltallverdi så %d Symbol brukes sammen med nummer 2 og 4 som representerer hvor mange tall vi vil lese. De %s symbolet brukes med måned som vil returnere tegn til et hvitt rom kommer.
Hvis det ikke er noen plass mellom data, kan vi bruke %c sammen med et tall som vil representere antall tegn vi vil lese. Alle dataene som leses vil bli skrevet ut separat ved hjelp av Serie.println ().
Produksjon
Utgang viser inngangsstrengen. Sscanf () vil lese data og lagre dem i separate tre variabler.
Konklusjon
Generelt, mens programmering på C -språk, leser vi innspill fra brukeren ved hjelp av SCANF () -funksjon, men det er bare begrenset til konsollen. For å lese data fra en definert streng og lagre dem separat i flere variabler vi bruker sscanf () Funksjon i Arduino -programmering. Denne skrivingen vil hjelpe deg med å forstå sscanf () og les data fra definerte strenger.