Вы находитесь на странице: 1из 7

Algoritmos e Programao

Strings

O uso mais comum de vetores como uma string de caracteres. Uma string usada para armazenar e manipular textos como palavras, nomes e sentenas. Uma string um vetor do tipo char terminada pelo caracter \0 (null). Por essa razo, voc precisa declarar strings como sendo um caracter mais longo que a maior string que elas devem guardar. Isso reserva espao para o null no final da string. A terminao \0 importante, pois a nica maneira que as funes possuem para poderem reconhecer onde o fim da string.

Strings constantes

Sempre que o compilador encontrar qualquer coisa entre aspas duplas, ele reconhece que se trata de uma string constante, isto , os caracteres entre as aspas mais o caracter null. No exemplo, Saudacoes! uma string constante:
printf(%d, Saudacoes!);

A funo scanf()

Uma das maneiras de receber uma string do teclado atravs da funo scanf() pelo formato %s.

#include <stdio.h> #include <conio.h> main() { char nome[15]; printf("Digite seu nome: "); scanf("%s", nome); printf("Bom dia %s\n", nome); getch();

A instruo scanf l cada caracter no branco e os armazena a partir do endereo nome. O processo termina quando um caracter branco encontrado. Voc deve ter notado que no usamos o operador & precedendo a string nome, isto porque o nome de um vetor corresponde ao seu endereo inicial no necessrio utilizar o operador &. A funo scanf() bastante limitada para a leitura de strings, porque scanf() utiliza qualquer espao em branco para terminar a entrada. O resultado que no existe uma forma de digitar um texto de mltiplas palavras numa nica varivel usando scanf().

A funo gets()

A funo gets() uma funo mais conveniente para a leitura de strings. Esta funo l caracteres at encontar o caracter de nova linha (\n) que gerado pressionando-se a tecla [Enter]. Todos os caracteres anteriores ao \n so armazenados na string, inclusive espaos e tabulaes. A funo gets() definida na biblioteca stdio.h.

Algoritmos e Programao

#include <stdio.h> #include <conio.h> main() { char nome[80]; printf("Digite seu nome: "); gets(nome); printf("Bom dia %s\n", nome); getch();

Inicializando strings O compilador oferece uma forma de inicializao de strings bastante simples. Basta colocar a string constante entre aspas duplas e atribu-la a varivel. O uso desta forma causa a incluso automtica do caracter \0 no final da string.

#include <stdio.h> #include <conio.h> main() { char saudacao[] = "Bom dia "; char nome[80]; printf("Digite seu nome: "); gets(nome); printf("%s %s\n", saudacao, nome); getch();

Outras funes de manipulao de strings

Vrios compiladores oferecem, em suas bibliotecas, funes para manipular strings. Aqui veremos 4 delas: strlen(), strcat(), strcmp() e strcpy().

A funo strlen()

A funo strlen() aceita um endereo de string como argumento e retorna o tamanho da string armazenada a partir deste endereo at um caracter antes de \0. A funo strlen() definida na biblioteca string.h.

#include <stdio.h> #include <string.h> #include <conio.h> main() { char palavra[80]; printf(Digite uma palavra: ); gets(palavra); printf(Sua palavra possui %d letras\n, strlen(palavra)); getch();

Algoritmos e Programao

A funo strcat()

A funo strcat() concatena uma cadeia de caracteres em outra. Isto significa que ela acrescenta uma cadeia ao final de outra. A funo strcat() definida na biblioteca string.h. strcat() toma dois endereos de strings como argumentos e concatena a segunda na primeira. A segunda cadeia no alterada. Esta funo no verifica se a segunda cadeia cabe no final da primeira.

#include <stdio.h> #include <string.h> #include <conio.h> main() { char saudacao[90] = "Bom dia, "; char nome[80]; printf("Digite o seu nome: "); gets(nome); strcat(saudacao, nome); printf("\n%s", saudacao); getch();

A funo strcmp()

A funo strcmp() utilizada para comparar duas cadeias de caracteres. A funo strcmp() definida na biblioteca string.h. strcmp() recebe dois endereos de strings e retorna um nmero inteiro que indica a diferena numrica do primeiro caracter diferente da primeira cadeia com o da segunda. Ento, se este nmero for: menor que zero igual a zero maior que zero str1 menor que str2 str1 igual a str2 str1 maior que str2

Neste contexto, menor que ou maior que indica que, se str1 e str2 forem colocados em ordem alfabtica, o que aparecer primeiro o menor.

#include <stdio.h> #include <string.h> #include <conio.h> main() { char solucao[] = "branco"; char resposta[40]; printf("Qual e' a cor do cavalo branco de Napoleao? "); gets(resposta); while( strcmp(resposta, solucao) != 0 ) { printf("\nResposta incorreta. Tente novamente: "); gets(resposta); } printf("\nCorreto!"); getch(); }

Algoritmos e Programao

Veja um exemplo que imprime o valor retornado por strcmp() em vrias situaes:

#include <stdio.h> #include <string.h> #include <conio.h> main() { printf("\nA==A?\n%d", strcmp("A", "A")); printf("\nA==B?\n%d", strcmp("A", "B")); printf("\nB==A?\n%d", strcmp("B", "A")); printf("\nC==A?\n%d", strcmp("C", "A")); printf("\ngato==gata?\n%d", strcmp("gato", "gata")); getch(); }

A funo strcpy()

A funo strcpy() recebe dois endereos de strings como argumentos e copia o contedo da segunda na primeira. A funo strcpy() definida na biblioteca string.h.

#include <stdio.h> #include <string.h> #include <conio.h> main() { char msg1[30] = "Bom dia pessoal!"; char msg2[30] = "Boa tarde pessoal!"; printf("\n%s", msg1); strcpy(msg1, msg2); printf("\n%s", msg1); getch(); }

Algoritmos e Programao

A funo strchr()

A funo strchr() recebe como argumentos uma string e um caracter e retorna um ponteiro para a primeira ocorrncia do caracter na string. Isto significa que, se o caracter faz parte da string a funo retorna verdadeiro, caso contrrio retorna falso. A funo strchr() definida na biblioteca string.h.

#include <stdio.h> #include <string.h> #include <conio.h> main() { char palavra[80], c; printf("Digite uma palavra: "); gets(palavra); printf("Digite uma letra: "); c = getche(); if( strchr(palavra, c) ) printf("\nO caracter foi encontrado na palavra."); else printf("\nO caracter nao foi encontrado na palavra."); getch(); }

A funo strstr()

A funo strstr() recebe como argumentos duas string e retorna um ponteiro para a primeira ocorrncia da segunda string na primeira string. Isto significa que, se a segunda string faz parte da primeira a funo retorna verdadeiro, caso contrrio retorna falso. A funo strstr() definida na biblioteca string.h.

#include <stdio.h> #include <string.h> #include <conio.h> main() { char frase[80], palavra[20]; printf("Digite uma frase: "); gets(frase); printf("Digite uma palavra: "); gets(palavra); if( strstr(frase, palavra) ) printf("\nA palavra foi encontrada na frase."); else printf("\nA palavra nao foi encontrada na frase."); getch();

As funes strncat(), strncmp(), strncpy()

Estas funes so semelhantes s funes strcat(), strcmp() e strcpy(), respectivamente. A diferena que elas trabalham com um nmero fixo de caracteres. Todas recebem um terceiro argumento indicando o nmero de caracteres a processar. Por exemplo, a funo strncat() concatena n caracteres da segunda cadeia na primeira; strcmp() compara n caracteres das cadeias; e strncpy() copia n caracteres da segunda cadeia para a primeira. Exemplo utilizando strncat():

Algoritmos e Programao

#include <stdio.h> #include <string.h> #include <conio.h> main() { char destino[50] = "Estados"; char fonte[] = " Unidos da America"; strncat(destino, fonte, 7); printf("%s\n", destino); getch();

Exemplo utilizando strncmp():

#include <stdio.h> #include <string.h> #include <conio.h> main() { char str1[50] = "Estados Unidos da America"; char str2[50] = "Estados Unidos"; if( strncmp(str1, str2, 14) == 0 ) printf("\nAs strings sao iguais"); else printf("\nAs strings sao diferentes"); getch();

Exemplo utilizando strncpy():

#include <stdio.h> #include <string.h> #include <conio.h> main() { char str1[] = "Estados Unidos da America"; char str2[50]; strncpy(str2, str1, 14); printf("\n%s", str2); getch();

Matriz de strings Como uma string um vetor de caracteres, uma matriz de strings na realidade uma matriz bidimensional. O programa seguinte solicita que seja informada uma data e imprime o dia da semana correspondente:

#include <stdio.h> #include <conio.h> #define ESC 27 main() { char diasemana[7][14]={ "Domingo", "Segunda-feira", "Tera-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sabado" }; int dia, mes, ano; float f;

Algoritmos e Programao

do{ printf("\nDigite a data na forma dd mm aaaa: scanf("%d%d%d", &dia, &mes, &ano); f = ano + dia + 3 * (mes - 1) - 1; if( mes < 3 ) ano--; else f -= int(0.4 * mes + 2.3); f += int(ano/4) - int((ano/100 + 1) * 0.75); f = int(f)%7; printf("%s \n", diasemana[int(f)]); }while(getche() != ESC); } ");

Observe como a matriz de strings inicializada. Cada palavra entre aspas um vetor de caracteres, ou seja, uma string.

Вам также может понравиться