[Curso de AEeD - Aula 10] Cadeia de Caracteres

A linguagem C não oferece um tipo "String" assim como outras linguagens de programação. Por se tratar de uma linguagem de mais baixo nível os caracteres são representados na memória através de códigos numéricos. 
Em C temos o tipo 'char' - 1 byte - que pode representar 256 valores distintos. Assim, os códigos numéricos associados a caracteres estão neste intervalo. Esta associação é realizada através de uma tabela denominada ASCII.




1 - Vetores de Caracteres

Se você declara uma variável com char, esta variável pode conter apenas um único caracter. O valor caracter atribuído para a variável deve estar entre aspas simples. Ex: char a = 'x';
No entanto, vetores de caracteres permitem armazenar vários caracteres. Veja um exemplo:

char digitos_base[7] = {'0', '1', '2', '3', '4', '5', '6'}

char palavra[] = {'c','o','m','p'}

Se você instancia um vetor sem tamanho e o inicializa utilizando {} o C automaticamente fixa seu tamanho. Assim, caso você queira exibir este vetor de palavras, é necessário utilizar um laço de repetição:

for( i =  0; i < 4; i++ ) 
        printf("%c", palavra[ i ] );


Falando ainda um pouco mais sobre a inicialização, para que o C saiba que a partir de determinado ponto a string acabou, ele utiliza o caracter especial '\O'

char palavra [] = { 'l', 'i', 'n', 'g','u' ,'a', '\o'}

Este mesmo vetor pode ser inicializado mais facilmente da seguinte forma:

char palavra[] = {"ufpa"};

 Ao inicializar o vetor de caracteres e definir seu tamanho deve-se reservar espaço para o \o.

char palavra [7] = {"lingua"}

Se uma string é declarada elas podem ser exibidas utilizando o printf

printf("%s", palavra);

1.1 - Leitura de Strings contendo espaços

Para realizar a leitura de strings que contém espaços é ncessário utilizar a seguinte sintaxe:

scanf ("%[^\n]%*c", variável_vetorchar);

[] - caracter de scanset
[^\n] - enquanto a entrada não for uma nova linha, i.e. '\n', receba a entrada
%*c - Realiza a leitura do caractere de nova linha a partir do buffer de entrada


2 - Comparando cadeias de caracteres

Quanto utilizamos a linguagem C não é possível comparar duas strings diretamente, visto que a linguagem não compreende o que deve ser feito para comparação.  Ex: if ( str1 == str 2) → erro.
O operador '==' só compara tipos primitivos (char, int, float). Sendo assim, para comparar strings devemos comparar caracter-a-caracter. 


3- Ponteiros e strings

Considerando que um vetor é uma alocação sequencial de espaços de memória. O que temos quando alocamos um vetor é simplesmente um ponteiro que indica a primeira posição do vetor. O restante é feito através da soma de números na operação de desreferenciação de ponteiros. Veja o exemplo:

#include <stdio.h>

char A[] = "lingua";
main(){
     char *prt;
     prt = A;
     printf("%c \n ", *ptr)
     printf("%c \n", *ptr + 1));
}


4 - Usando a biblioteca string.h

A linguagem C também oferece uma biblioteca que pode ser utilizada para manipular strings. Para utiliza-la basta adicionar a biblioteca string.h no cabeçalho do programa.

strlen() - retorna o tamanho da string;
strcat() - concatena duas strings
strcmp() -  compara duas strings
                0: conteúdo das strings são iguais
                < 0: conteúdo da string1 é menor do que string2
                > 0: conteúdo da string1 é maior do que string2
strcpy() - copia uma string para outra variavel




[Curso de AEeD - Aula 10] Cadeia de Caracteres [Curso de AEeD - Aula 10] Cadeia de Caracteres Reviewed by Vinicius dos Santos on 10:38:00 Rating: 5

Nenhum comentário

Escreve ai sua opinião!