En el món de la programació, la paraula string
no té a veure amb coses llargues i primes per fer llaços. Un string és una seqüència de caràcters. És la manera de fer que el teu Arduino tracti amb text. Per exemple, l'sketch 04_03_string
enviarà repetidament el text "Hello" al Monitor Serial una vegada per segon:
// 04_03_string
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello");
delay(1000);
}
Els literals de strings estan entre cometes dobles. Són literals en el sentit que el string és constant, molt semblant a com int 123
és un literal numèric.
A continuació es mostren alguns codis ASCII comuns:
Caràcter | Codi ASCII (Decimal) |
---|---|
a–z | 97–122 |
A–Z | 65–90 |
0–9 | 48–57 |
espai | 32 |
Taula 4-1: Codis ASCII comuns.
Tal com s'espera, pots posar strings en una variable. També hi ha una biblioteca de strings avançada, però per ara utilitzarem els strings estàndard de C, tal com es veu en l'sketch 04_03_string
.
En C, un literal de string és en realitat un array del tipus char
. El tipus char
és similar a int
en el sentit que és un número, però aquest número està entre 0 i 127 i representa un caràcter. Aquest caràcter pot ser una lletra, un número, un signe de puntuació o un caràcter especial, com ara una tabulació o un salt de línia. Aquests codis per a les lletres utilitzen l'estàndard ASCII.
El literal de string "Hello"
és en realitat un array de caràcters, tal com es mostra a la Figura 4-3:
H (72)
e (101)
l (108)
l (108)
o (111)
\0 (0)
Nota: El literal de string té un caràcter especial null (\0
) al final, que s'utilitza per indicar la fi del string.
Les variables de string són molt semblants a les variables d'array, excepte que hi ha una manera abreujada útil per definir el seu valor inicial.
char name[] = "Hello";
Això defineix un array de caràcters i l'inicialitza amb la paraula "Hello"
. També afegeix un valor final null (ASCII 0) per marcar la fi del string.
Encara que l'exemple anterior és coherent amb el que ja saps sobre la definició d'arrays, és més comú escriure el següent:
char *name = "Hello";
Aquí, el *
indica un punter. La idea és que name
apunta al primer element char
de l'array, és a dir, a la ubicació de memòria que conté la lletra H.
Pots reescriure l'sketch 04_03_string
per utilitzar una variable de string, tal com es mostra a continuació:
// 04_04_string_var
char message[] = "Hello";
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(message);
delay(1000);
}