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 atentos para o fato de que as strings têm o seu último elemento como  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 padrão 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' (isto é, o número inteiro 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>
int 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'. 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>
int main ()
{
	char string[100];
	printf ("Digite o seu nome: ");
	gets (string);
	printf ("\n\n Ola %s",string);
	return(0);
}

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);

  isto simplesmente imprimirá a 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 no arquivo cabeçalho string.h. A seguir apresentamos um exemplo de uso da função strcpy():

 

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

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>
int main ()
{
	char str1[100],str2[100];
	printf ("Entre com uma string: ");
	gets (str1);
	strcpy (str2,"Voce digitou a string ");
	strcat (str2,str1);	/* str2 armazenara' Voce digitou a string + o conteudo de str1 */
	printf ("\n\n%s",str2);
	return(0);
}

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>
int 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);
	return(0);
}

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>
int 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.");
	return(0);
}

 


AUTO AVALIAÇÃO

Veja como você está.

Faça um programa que leia quatro 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


Curso de C do CPDEE/UFMG - 1996 - 1999