Escolar Documentos
Profissional Documentos
Cultura Documentos
73
nome com 200 posies e preenchermos com a string Ana, o que realmente acontece na memria? nome[0] nome[1] nome[2] nome[3] nome[4] nome[5] A n a \0 <lixo> <lixo> ... ... nome[199] <lixo>
As variveis strings podem ser inicializadas no momento da declarao da mesma forma que as variveis de outros tipos. No se esquea que uma string sempre vem entre aspas ( ). Exemplo: char nome[20] = Roberto; char nome[20] = {R,o, b, e, r, t, o}; //o \0 colocado automaticamente char nome[] = Roberto; // equivalente a nome[7+1] char *nome = Roberto; //declarao via ponteiro. equivalente ao exemplo logo acima.
74
Exemplo de utilizao da funo gets(): #include <stdio.h> #include <stdlib.h> int main() { char string[100]; printf (Digite o seu nome: ); gets (string); printf (\n\n Ola %s,string); system(pause); return(0); } Funo strlen() Uma funo bastante til na manipulao de strings a funo strlen() da biblioteca string.h, utilizada para retornar o comprimento da string. No comprimento retornado no includo o finalizador de strings. A forma geral para a funo : strlen( nome_da_string ); A funo strlen() retorna um valor do tipo inteiro. Exemplo: #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int tamanho; char str[100]; printf(Entre com uma string: ); gets(str); tamanho = strlen(str); printf(\n\nTamanho da string digitada %d, tamanho); system(pause); return(0); } Funo strcpy() Em C no permitido usar o operador de atribuio para copiar o contedo de uma varivel string para outra. Para realizar essa operao existe a funo strcpy() da biblioteca string.h. Esta funo utilizada para copiar o contedo de uma string para outra. A sua forma geral : strcpy( string_destino, string_origem );
75
A string_origem copiada na string_destino. Exemplo: #include <stdio.h> #include <string.h> #include <stdlib.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 ); printf (\n\n%s%s,str3,str2); system(pause); return(0); } No programa exemplo acima, a string informada via teclado armazenada na varivel str1. Em seguida, o contedo de str1 copiado para a varivel str2 usando a funo strcpy(). Perceba que neste caso teremos duas variveis com o mesmo contedo. Caso a varivel str2 tenha um contedo inicial, este ser substitudo. Funo strcat() Esta funo utilizada para concatenar duas strings, ou seja, o contedo de uma string adicionado ao final de outra string. A funo strcat() est na biblioteca string.h. A forma geral da funo : strcat( string_destino, string_origem ); A string de origem permanecer inalterada e ser anexada ao fim da string de destino. Exemplo: #include <stdio.h> #include <string.h> #include <stdlib.h> int 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); system(pause); return(0); }
76
Funo strcmp() Esta funo utilizada para comparar alfabeticamente duas strings, uma vez que o operador relacional de igualdade no pode ser aplicado a variveis do tipo string. O retorno desta funo um valor inteiro tendo o seguinte significado: < 0 (se a primeira string alfabeticamente menor do que a segunda string), 0 (se as string so alfabeticamente iguais) ou > 0 (se a primeira string alfabeticamente maior do que a segunda string). A forma geral da funo strcmp() : strcmp( string1, string2 ); A tabela abaixo mostra exemplos da utilizao da funo strcmp() (Exemplo tirado do livro Linguagem C Luis Damas Editora LTC 10 Edio 2007):
Invocao
strcmp(abc, abxpo) strcmp(beatriz, carlos) strcmp(carlos, carla) strcmp(carlos, beatriz) strcmp(mario, maria) strcmp(maria, mariana) strcmp(, ) strcmp(ola, ola)
Resultado
<0 <0 >0 >0 >0 <0 0 0
Observaes
c < x b < c o > a c > b o > a A 1 string alfabeticamente menor do que a 2 As string so iguais As string so iguais
A funo strcmp() distingue os caracteres entre maisculo e minsculo retornando valores diferentes caso isso acontea. Uma opo utilizar a funo strcmpi() que executa a mesma funo mas ignorando caracteres maisculos e minsculos. #include <stdio.h> #include <string.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 so diferentes.); else printf(\n\nAs duas strings so iguais.); system(pause); return(0); }
77
78
strlwr(): converte todos os caracteres da string para minsculo. Exemplo: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s1[] = "Linguagem de Desenvolvimento C"; strlwr(s1); puts(s1); system(pause); return(0); } strupr(): converte todos os caracteres da string para maisculo. Exemplo: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s1[] = "Linguagem de Desenvolvimento C"; strupr(s1); puts(s1); system(pause); return(0); }
79
Tabela ASCII American Standard Code for Interchange Information Char Dec Char Dec Char Dec Char Dec 0 32 64 96 NUL ^@ SPACE @ 1 33 65 97 ^A ! A a 2 34 66 98 ^B B b 3 35 67 99 ^C # C c 4 36 68 100 ^D $ D d 5 37 69 101 ^F % E e 6 38 70 102 ^F & F f 7 39 71 103 ^G G g 8 40 72 104 ^H ( H h 9 41 73 105 TAB ^I ) I i 10 42 74 106 ^J * J j 11 43 75 107 ^K + K k 12 44 76 108 ^L , L l 13 45 77 109 ^M M m 14 46 78 110 ^N . N n 15 47 79 111 ^O / O o 16 48 80 112 ^P 0 P p 17 49 81 113 ^Q 1 Q q 18 50 82 114 ^R 2 R r 19 51 83 115 ^S 3 S s 20 52 84 116 ^T 4 T t 21 53 85 117 ^U 5 U u 22 54 86 118 ^V 6 V v 23 55 87 119 ^W 7 W w 24 56 88 120 ^X 8 X x 25 57 89 121 ^Y 9 Y y 26 58 90 122 ^Z : Z z 27 59 91 123 ^[ ; [ { 28 60 92 124 ^| < \ | 29 61 93 125 ^] = ] } 30 62 94 126 ^^ > ^ ~ 31 63 95 127 ^_ ? _ del
5. Faa um programa em C que leia uma palavra pelo teclado e faa a impresso conforme o exemplo a seguir para a palavra AMOR AMOR AMO AM A
80
6. Faa um programa em C que leia uma palavra pelo teclado e faa a impresso conforme o exemplo a seguir para a palavra AMOR A AM AMO AMOR 7. Escreva um programa em C que leia uma string e tambm um caractere. O seu programa dever apagar todas as ocorrncias do caractere informado na string. Observao: apagar no substituir. 8. Escreva um programa em C que leia apenas uma palavra (dica: use a funo scanf() para ler a string). Gerar uma nova string que ser a string lida contendo um espao em branco aps cada caractere. 9. Uma string considerada um palndromo se quando lida da esquerda para a direita e da direita para a esquerda apresentam o mesmo valor. Por exemplo: ANA. Escreva um programa em C em que o usurio possa digitar vrias palavras e informe se so palndromos ou no. A cada palavra informada pergunte ao usurio se ele deseja continuar a execuo do programa. 10. Escreva um programa em C que leia uma string via teclado. Converta os caracteres para minsculo e informe a quantidade de caracteres que tem cdigo ASCII par. 11. Escreva um programa em C que solicite o nome do usurio do sistema. O seu programa ir gerar uma senha que formada apenas pelos caracteres das posies mpares mais a soma do cdigo ASCII dos caracteres nas posies pares.
81
6. Escreva um programa em C que leia uma string. O seu programa dever contar o nmero de caracteres alfabticos da string. Dica: usar a funo isalpha(char c) da biblioteca ctype.h. A funo retornar um valor diferente de zero (valor verdadeiro em C) caso o caractere passado para a funo isalpha() for uma letra (A at Z ou a at z). 7. Escreva um programa em C que leia uma string via teclado. Em seguida, transforme a string lida em vazia, ou seja, a string dever ficar em branco (sem nenhum caractere). 8. Escreva um programa em C que leia uma string e tambm um caractere. O programa dever imprimir no vdeo a posio em que se encontra a ltima ocorrncia do caractere na string. Caso o caractere no esteja na string dever ser impresso no vdeo o valor -1. 9. Escreva um programa em C que leia uma string via teclado e retorne o valor do maior caractere ASCII presente na string. Caso a string esteja vazia retornar o caractere 0 (\0). 10. Escreva um programa em C que leia nomes completos do teclado e os escreva na tela no formato Sobrenome, Nome sem Sobrenome. Exemplos: Nome Antnio Marcos Selmini Sada no vdeo Selmini, Antnio Marcos Nome Catarina Silva Sada no vdeo Silva, Catarina Observaes: i) a primeira letra de cada palavra deve estar grafada em maiscula; ii) o processamento termina quando o usurio digitar Sair. 11. Escreva um programa em C que leia uma string (no mximo 100 caracteres) via teclado e informe a quantidade de palavras presentes na string.