Descrição

Strings são representadas como arrays do tipo de dado char e terminadas por null (nulo).

Exemplos

Todos os seguintes são declarações válidas de strings.

  char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";

Possibilidades de declaração de strings

  • Declarar um array de chars sem inicializar como em Str1
  • Declarar um array de chars (com um char a mais) e o compilador vai adcionar o caractere null necessário como em Str2
  • Adcionar explicitamente o caractere null como em Str3
  • Inicializar com uma string constante entre aspas; o compilador determina o tamanho de modo a armazenar a string e o caractere null final como em Str4
  • Inicializar o array com uma string constante e o tamanho explicitos como em Str5
  • Inicializar o array deixando espaço extra para uma string maior como em Str6

Terminação em Null

Geralmente strings são terminadas com o caractere null (código ASCII 0). Isto permite às funções (como Serial.print()) saber onde está o final da string. De outro modo elas continuariam lendo os bytes subsequentes da memória que de fato não pertencem à string.

Isto significa que sua string deve ter espaço para um caractere a mais do que o texto que ela contém. É por isso que Str2 e Str5 precisam ter 8 caracteres, embora "arduino" tenha apenas 7 - a última posição é automaticamente preenchida com o caracatere null. Str4 terá o tamanho determinado automaticamente como 8 caracteres, um extra para o null. Na Str3 nós incluimos explicitamente o caractere null (escrito como '\0').

Note que é possível ter uma string sem o caractere final null (e.g. se você tivesse especificado o tamanho da Str2 com sete ao invés de oito). Isto vai danificar a maioria das funções que usam strings, portanto você não deve fazer isso intencionalmente. Entretanto se você notar algo se comportando de maneira estranha (operações em caracteres que não pertencem à string) este poderia ser o problema.

Aspas ou apóstrofos?

Strings são sempre definidas com aspas ("Abc") e caracteres sempre definidos com apóstrofos('A').

Envolvendo strings longas

Você pode envolver strings longas desse modo:

char myString[] = "This is the first line"
" this is the second line"
" etcetera";

Arrays de strings

Freqüentemente é conveniente, quando se está trabalhando com grandes quantidades de texto, como em um projeto com um display de LCD, configurar um array de strings. Devido ao fato de as strings serem elas mesmas arrays, este é de fato um exemplo de um array bi-dimencional.

No código abaixo os asteriscos após o tipo de dado char "char*" indica que se trata de um array de "ponteiros". Todos os nomes de array são de fato ponteiros, e assim são requeridos para se configurar um array de arrays. Ponteiros são uma das partes mais esotéricas da linguagem C que os principiantes têm que entender, mas é necessário entender os ponteiros em detalhe para fazer um uso efetivo deles neste caso.

Exemplo

char* myStrings[]={"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5","This is string 6"};

void setup(){
Serial.begin(9600);
}

void loop(){
for (int i = 0; i < 6; i++){
Serial.println(myStrings[i]);
delay(500);
}
}

Veja também

 

Página de início da referência

Correções, sugestões, e nova documentação devem ser enviadas ao Forum.

O texto de referência do Arduino está baixo uma Licença Creative Commons Attribution-ShareAlike 3.0. Amostras de código utilizadas na referência foram deixados  ao domínio público.

 

O conteúdo desta página é uma tradução para o português a partir do site original do Arduino.

Esta obra está sob uma Licença Creative Commons.

Creative Commons License