CURSO DE C

Strings


Strings são vetores de chars. Nada mais e nada menos. As strings são o uso mais comum para os vetores. Devemos apenas ficar sempre atentos para o fato de que as strings têm o seu último elemento como sendo um '\0'. A declaração geral para uma string é:

 char nome_da_string [tamanho];

 Devemos lembrar que o tamanho da string deve incluir o '\0' final. A biblioteca do C possui diversas funções que manipulam strings. Estas funções são úteis pois não se pode, por exemplo, igualar duas strings:

 

                string1=string2;        /* NAO faca isto */
Fazer isto é um desastre. Quando você terminar de ler a seção que trata de ponteiros você entenderá porquê. As strings devem ser igualadas elemento a elemento.

 Quando vamos fazer programas que tratam de string muitas vezes podemos fazer bom proveito do fato de que uma string termina com '\0'. Veja, por exemplo, o programa abaixo que serve para igualar duas strings (isto é, copia os caracteres de uma string para o vetor da outra):

 

#include <stdio.h>
main ()
{
int count;
char str1[100],str2[100];
....            /* Aqui o programa le str1 que sera copiada para str2 */
for (count=0;str1[count];count++)
        {
        str2[count]=str1[count];
        }
str2[count]='\0';
....            /* Aqui o programa continua */
}
A condição no loop for acima é baseada no fato de que a string que está sendo copiada termina em '\0'. Este tipo de raciocínio é a base do C e você deve fazer um esforço para entender como é que o programa acima funciona. Quando o elemento encontrado em str1[count] é o '\0', o valor retornado para o teste condicional é falso (nulo). Desta forma a expressão que vinha sendo verdadeira (não zero) continuamente, torna-se falsa.

 Vamos ver agora algumas funções básicas para manipulação de strings.

 

gets

A função gets() lê uma string do teclado. Sua forma geral é:

 gets (nome_da_string);

 O programa abaixo demonstra o funcionamento da função gets():

 

#include <stdio.h>
main ()
{
char string[100];
printf ("Digite o seu nome: ");
gets (string);
printf ("\n\n Ola %s",string);
}
Repare que é válido passar para a função printf() o nome da string. Você verá mais adiante porque isto é válido. Como o primeiro argumento da função printf() é uma string também é válido fazer:

 

                printf (string);

strcpy

Sua forma geral é:

 strcpy (string_destino,string_origem);

 A função strcpy() copia a string-origem para a string- destino. Seu funcionamento é semelhante ao da rotina apresentada na seção anterior. As funções apresentadas nestas seções estão na biblioteca do C string.h. A seguir apresentamos um exemplo de uso da função strcpy():

 

#include <stdio.h>
#include <string.h>
main ()
{
char str1[100],str2[100],str3[100];
printf ("Entre com uma string: ");
gets (str1);
strcpy (str2,str1);
strcpy (str3,"Voce digitou a string ");
printf ("\n\n%s%s",str3,str2);
}

strcat

A função strcat() tem a seguinte forma geral:

 strcat (string_destino,string_origem);

 A string de origem permanecerá inalterada e será anexada ao fim da string de destino. Um exemplo:

 

#include <stdio.h>
#include <string.h>
main ()
{
char str1[100],str2[100];
printf ("Entre com uma string: ");
gets (str1);
strcpy (str2,"Voce digitou a string ");
strcat (str2,str1);
printf ("\n\n%s",str2);
}

strlen

Sua forma geral é:

 strlen (string);

 A função strlen() retorna o comprimento da string fornecida. O terminador nulo não é contado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser um a mais que o inteiro retornado por strlen(). Um exemplo do seu uso:

 

#include <stdio.h>
#include <string.h>
main ()
{
int size;
char str[100];
printf ("Entre com uma string: ");
gets (str);
size=strlen (str);
printf ("\n\nA string que voce digitou tem tamanho %d",size);
}

strcmp

Sua forma geral é:

 strcmp (string1,string2);

 A função strcmp() compara a string 1 com a string 2. Se as duas forem idênticas a função retorna zero. Se elas forem diferentes a função retorna não-zero. Um exemplo da sua utilização:

 

#include <stdio.h>
#include <string.h>
main ()
{
char str1[100],str2[100];
printf ("Entre com uma string: ");
gets (str1);
printf ("\n\nEntre com outra string: ");
gets (str2);
if (strcmp(str1,str2))
        printf ("\n\nAs duas strings são diferentes.");
else printf ("\n\nAs duas strings são iguais.");
}

 


AUTO AVALIAÇÃO

Veja como você está.

  • Faça um programa que leia várias palavras pelo teclado, e armazene cada palavra em uma string. Depois, concatene todas as strings lidas numa única string. Por fim apresente esta como resultado ao final do programa.

  • Página Anterior  Índice da Aula  Próxima Página

    Dúvidas? De uma olhadinha em nosso FAQ

    Perguntas para a lista do Curso de C