Mudanças entre as edições de "SOP-strings"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 25: Linha 25:
 
</graphviz>
 
</graphviz>
  
Note que depois do último '''e''' há um caractere \0. A barra invertida significa que o número mostrado naquela posição do diagrama corresponde ao [http://pt.wikipedia.org/wiki/ASCII código ASCII] do caractere. O caractere de código 0 (zero) representa na verdade um caractere nulo (não visível e que não representa nenhum caractere real), e no caso serve para indicar onde está o final de ''string''. Assim, note que as demais posições da variável ''palavra'' não são usadas, apesar de estarem ali disponíveis.
+
No diagrama acima, a caixa intitulada '''palavra''' corresponde à variável ''palavra''. Note que depois do último '''e''' há um caractere \0. A barra invertida significa que o número mostrado naquela posição do diagrama corresponde ao [http://pt.wikipedia.org/wiki/ASCII código ASCII] do caractere. O caractere de código 0 (zero) representa na verdade um caractere nulo (não visível e que não representa nenhum caractere real), e no caso serve para indicar onde está o final de ''string''. Assim, note que as demais posições da variável ''palavra'' não são usadas, apesar de estarem ali disponíveis.

Edição das 15h44min de 4 de dezembro de 2009

Strings na linguagem C

Uma variável string representa uma cadeia de caracteres (ou uma sequência de caracteres). A própria palavra string pode ser traduzida para cadeia, no sentido de um encadeamento de coisas. Como não existe um tipo de dados string na linguagem C, strings são representadas por vetores de caracteres.

int main() {
  char palavra[16];

  printf("Digite uma palavra de até 15 letras: ");
  scanf("%s", palavra);

  printf("Você digitou %s\n", palavra);
}

No exemplo acima, foi declarada uma variável string chamada palavra, que pode conter até 15 caracteres. A quantidade de caracteres de que pode ser composta uma string é sempre uma unidade a menos que a capacidade do vetor, porque uma posição do vetor é reservada para assinalar o final da string. Olhando como uma cadeia de caracteres fica armazenada no vetor ajuda a entender isto, imaginando que foi digitado Teste:

<graphviz> digraph Frase { Frase [shape=Mrecord,label="<0>T|<1>e|<2>s|<3>t|<4>e|<5>\\0|<6> |<7> |<8> |<9> |<10> |<11> |<12> |<13> |<14> |<15> |<16> "] palavra [shape=record] palavra -> Frase:0 } </graphviz>

No diagrama acima, a caixa intitulada palavra corresponde à variável palavra. Note que depois do último e há um caractere \0. A barra invertida significa que o número mostrado naquela posição do diagrama corresponde ao código ASCII do caractere. O caractere de código 0 (zero) representa na verdade um caractere nulo (não visível e que não representa nenhum caractere real), e no caso serve para indicar onde está o final de string. Assim, note que as demais posições da variável palavra não são usadas, apesar de estarem ali disponíveis.