Aula 9: Caracteres e Strings
Limitações de C em trabalho com caracteres e strings
C não possui um tipo string explícito. Não existe palavra reservada que declare uma variável para armazenar uma string. Em vez disto, você aloca espaço na memória para uma string definindo uma matriz de caracteres.
Uma matriz de caracteres algumas vezes se parece com qualquer outra variável. Por exemplo você pode mostrar uma string inteira na tela numa única operação printf e usar uma variedade de funções para ler uma string do teclado e armazenar numa variável de entrada.
Exemplo:
printf ("%s\n", strings);
Mas algumas operações essenciais de strings estão ausentes da linguagem C propriamente dita. Essas operações estão disponíveis nas bibliotecas de funções no Borland C:
As operações de
* atribuição de uma string a uma variável
* adição ou concatenação de uma string a outra string
* comparação de strings
que são operações simples em outras linguagens, não são possíveis de realizar diretamente, tem que ser utilizadas funções específicas de biblioteca, respectivamente:
* strcpy
* strcmp ou stricmp
* strcat
Atribuições de string - atribuir um valor literal string a uma variável string. Uma tentativa de execução da operação resulta num erro de compilação. Em vez disto, você utiliza uma função da biblioteca < string.h> chamada strcpy
Exemplos errado e correto:
char linguagem[20];
linguagem = "linguagem C"; /* ilegal em C */
strcpy( linguagem, "linguagem C"); /* legal */
Comparações de string - determinar quando uma string é alfabeticamente maior ou menor que outra string. Em vez disto, você utiliza uma função da biblioteca< string.h> chamada strcmp.
Exemplos errado e correto:
string1 < string2 /* ilegal em C */
strcomp( string1, string2); /* legal */
Concatenação de strings - juntar uma string no final de outra para produzir uma nova string combinada. Em vez disto, você utiliza uma função da biblioteca< string.h> chamada strcat.
Exemplos errado e correto:
string3 = string1 + string2; /* ilegal em C */
strcat( string1, string2); /* legal */
Um arquivo de cabeçalho chamado string.h contém as declarações de um número de funções da biblioteca que você usará freqüentemente em tarefas de tratamento de strings. A seguinte diretiva lê este arquivo de cabeçalho para usar em um programa.
#include < string.h>
Convenientemente, muitas funções declaradas em string.h possuem nomes que começam com str - por exempo, strcpy, strcmp e strcat, as funções que executam atribuições, comparações e concatenações.
Para armazenar uma string literal numa variável string - ou copiar o conteúdo de uma variável string para outra - você usa a função strcpy.
Sintaxe:
strcpy (variável, string);
Essa função copia o valor da string na segunda posição do argumento para uma variável string na primeira posição. O segundo argumento pode ser uma variável, uma expressão string ou um valor literal string contido entre aspas.
/* ex48.c utilização da função strcpy */
#include < stdio.h> /* diretiva */
#include < string.h>
#define LENGHT 17
main() /* função principal */
{
char origem[LENGHT} = "Aqui vamos de novo!",
destino[LENGHT];
strcpy (destino, "constante string");
printf ("%s\n", destino);
strcpy (destino, origem);
printf ("%s\n", destino);
}
A função strcmp compara duas strings e devolve um valor inteiro que lhe diz qual das strings vem antes no código ASCII:
Sintaxe:
strcmp (string1, string2);
Nesse contexto, string1 é dita ser "maior que" string2 se o primeiro caracter não-coincidente em string1 tiver um código ASCII maior que o caracter correspondente na string2.
A função strcmp devolve um valor inteiro que indica o relacionamento entre string1 e string2:
Um valor menor que zero significa que string1 é menor que string2.
Um valor zero significa que ambas as strings são iguais.
Um valor maior que zero significa que string1 é maior que string2.
Exemplo:
Se string1 é "ABC" e string2 é "DEF", strcmp fornece um valor negativo, indicando que string1 é menor que string2.
As letras minúsculas possuem um código ASCII maior que as letras maiúsculas. Se string1 é "abc" e string2 é "DEF", strcmp fornece uma valor positivo, indicando que string1 é maior que string2. Borland C também possui uma função de comparação de strings chamada stricmp que ignora as diferenças das letras maiúsculas e minúsculas nas comparações.
/* ex49.c utilização da função strcmp */
#include < stdio.h> /* diretivas */
#include < string.h>
main() /* função principal */
{
char string1[] = "um", string2[] = "um";
int menor, result = 0;
if (strlen (string2) > = strlen (string1))
result = strcmp(string1, string2);
printf ("A string %s encontrada.", result = = 0? "foi :
"não foi");
}
A função strcat junta uma string ao final de outra.
Sintaxe:
strcat (string1, string2);
Como resultado desse comando, o valor de string2 é anexado ao final de string1. Uma vez que o valor concatenado é realmente armazenado em string1, essa variável deve estar definida com o tamanho adequado para armazenar a string combinada.
/* ex50.c utilização da função strcat */
#include < stdio.h> /* diretivas */
#include < string.h>
main() /* função principal */
{
char string1[20] = "Faturamento ";
char string2[20] = "Horas";
strcat (string1, string2);
printf ("\n\"%s\"contém %d caracteres.\n", string1, strlen(string1));
}
A função strupr converte uma string para maiúsculas e strlwr para minúsculas. Cada função toma uma única string como argumento:
strupr (string)
strlwr (string)
Essas funções afetam apenas os caracteres alfabéticos contidos na string, excluindo dígitos ou caracteres de pontuação. Cada função devolve um valor string especificado.
Borland C também suporta funções que convertem o caso alfabético para caracteres individuais. Essas funções, chamadas toupper e tolower, são declaradas no arquivo de cabeçalho ctype.h. Ambas pegam um único caracter como argumento e devolvem o equivalente maiúsculo ou minúsculo:
toupper (c)
tolower (c)
/* ex53.c utilização da função strupr */
#include < stdio.h>
#include < string.h>
main()
{
char s[80];
printf ("Digite uma string: ");
printf ("\nA string em maiúscula é: %s\n",
strupr(gets(s)));
}
/* ex54.c utilização da função toupper e tolower */
#include < stdio.h> /* diretivas */
#include < ctype.h>
main ()
{
printf ("tolower(A) = %c\n, tolower('A'));
printf ("toupper(A) = %c, toupper('A'));
}
resultado:
tolower(A) = a
touper(A) = A
/* ex56.c utilização da função strlwr */
#include< stdio.h>
main()
{
char s1[] = "ABC";
strlwr(s2);
printf ("%s\n", s2);
}
![]() Voltar à HomePage |
![]() Ir para o topo da Página |
![]() Ir para a Aula 10 |
---|