sexta-feira, 3 de outubro de 2014

Strings sem dor de cabeça

Strings na linguagem C

Para entendermos como funciona uma string de caracteres, na linguagem c, é muito importante compreender como os caracteres são representados pelo computador, como a linguagem c é uma linguagem compilada e não interpretada temos que trabalhar com strings pensando na forma que o computador C a interpreta. A linguagem C considera os caracteres como números que vão de 0 até 127, enumerados segundo a tabela ASCII, assim:

char exemplo = 61;
printf("61 em C é : %c\n",exemplo );

O programa mostraria : 61 em C é igual a : a

Talvez você quererá atribuir números a um elemento char, então existe 2 formas de fazer isso:

    char exemplo = '1';   OU char exemplo = 31;

em ambos os casos mostram o valor 1.

Mais com o aumento dos nosso programas trabalhar com caracteres únicos tornar-se inviável, então podemos criar um vetor de caracteres denominados strings que nada mais é que um espaço de memoria que contem vários caracteres em fila, como por exemplo:

Athos                                      André                   peixe                     Cachorro

Então se pensarmos um pouco veremos que string nada mais é do que caracteres agrupados e que termina com o caractere  '\0', indicando o final da string. No exemplo abaixo declararmos uma string de 10 caracteres + um caractere terminador '\0', pois o primeiro índice inicia em 0.

char string[10];

No segundo exemplo o compilador sobrescreve o U pois o terminador '\0' é sempre colocado.

#include <stdio.h>

int main () {

char string[1]="EU";

printf("%s\n",string);

return 0;
}

Uma string possui índices e é com esse índices que iremos trabalhar: como por exemplo o meu nome.

0-F
1-e
2-r
3-n
           4-a           
5-n
6-d
7-o
  8-'\0'

Então se quisermos ler uma string temos que fazer o seguinte:

char string[ //defina o tamanho aqui];

int i;

while(i<//tamanho da string){
scanf(" %[^ \n]",string[i] );
}

Mais se quisermos ler varias strings  temos que criar uma matriz de caractere, e para isso precisamos de de dois índices, onde o primeiro representa a linha e o segundo representa a coluna:

                                                                          0123456789
0 fernando'\0'
1       athos'\0'
2       andré'\0'
3    leticia '\0' 

Como exemplo podemos fazer o seguinte:

int i,j;
char string [//aqui vc coloca o numero de palavras que sua matriz tem ] [// aqui vai o maior numero de carceres que vai na string];

for(i=0;i<linhas;i++){ scanf("%[^\n]",string[i]); // %[^\n] lê a string até que se aperte a tecla enter }

bons estudos!

Nenhum comentário:

Postar um comentário