Strings
Em C, uma string é definida como um vetor de caracteres que é terminada por um nulo (\0). Assim, precisamos declarar vetores de caracteres maiores que considerem o nulo. Por exemplo, para declararmos a variável frase que guarda uma string de 14 caracteres, escreveríamos:
char frase[15];
Isso reserva um espaço para o nulo no final da string.
Cuidados ao se trabalhar com strings:
Funções de Manipulação de String
Função strcpy
char *strcpy(char *destino,char *origem)
Copia o conteúdo de origem em destino. Copia uma string para outra. Retorna um ponteiro para destino.
Exemplo:
O fragmento de código seguinte copia alo na string str.
char str[80];
strcpy(str,”alo”);
Função strncpy
char *strcnpy(char *destino, char *origem,unsigned count)
Copia até count caracteres da string apontada por origem na string apontada por destino. Retorna destino. Não coloca \0 no final de destino.
Exemplo:
O pedaço de código seguinte copia no máximo 79 caracteres de str1 para str2, garantindo, assim, que não ocorrerá nenhum estouro de limite de vetor.
char str1[128], str2[80];
gets(str1);
strncpy(str2,str1,79);
Função strcmp
int strcmp(char *str1, char *str2)
Compara duas strings e retorna um inteiro baseado no resultado, como mostrado a seguir:
Valor | Significado |
<0 | str1 é menor que str2 |
0 | str1 é igual a str2 |
>0 | str1 é maior que str2 |
Exemplo que retornará Str1 Maior:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str1[4]="alo",str2[4]="al";
if (strcmp(str1,str2)==0)
printf("Igual");
if (strcmp(str1,str2)<0)
printf("Str1 Menor");
if (strcmp(str1,str2)>0)
printf("Str1 Maior");
system("PAUSE");
return 0;
}
Função strncmp
int strncmp(char *str1, char *str2,unsigned count)
Compara não mais que count caracteres das duas strings terminadas com nulo e retorna um inteiro baseado no resultado, como mostrado a seguir:
Valor | Significado |
<0 | str1 é menor que str2 |
0 | str1 é igual a str2 |
>0 | str1 é maior que str2 |
Exemplo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{char str1[4]="ab",str2[4]= "ab";
if (strncmp(str1,str2,2)==0)
printf("Igual");//MOSTRARÁ ESTA MENSAGEM
if (strncmp(str1,str2,2)<0)
printf("Str1 Menor");
if (strncmp(str1,str2,2)>0)
printf("Str1 Maior");
system("PAUSE");
return 0;
}
Função strcat
char *strcat(char *destino,char *origem)
Concatena duas strings. Retorna a string concatenada (destino). É de responsabilidade do programador garantir que destino seja suficientemente grande para armazenar seu conteúdo original e o de origem.
Exemplo:
O programa seguinte acrescenta a primeira string lida à segunda. Por exemplo, supondo que o usuário tenha digitado alo e aqui, o programa escreve aquialo.
#include <stdio.h>
#include <string.h>
int main()
{char s1[80],s2[80];
gets(s1); //digitamos alo
gets(s2); //digitamos aqui
strcat(s2,s1);
printf("%s",s2);//escreverá aquialo
system("PAUSE");
return 0;
}
Função strlen
unsigned strlen(char *str)
Retorna o número de caracteres da string, sem contar o ‘\0’.
Exemplo:
Este fragmento de código escreve 3 na tela.
printf(“%d”,strlen(“alo”));
Função strupr
char *strupr(char *str)
Converte todos os caracteres da string em maiúsculo.
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{char s1[5]="alo";
strupr(s1);
printf("%s",s1);//escreverá ALO
system("PAUSE");
return 0;
}
Função strlwr
char *strlwr(char *str)
Converte todos os caracteres da string em minúsculo.
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{char s1[5]="ALO";
strlwr(s1);
printf("%s",s1);//escreverá alo
system("PAUSE");
return 0;
}
As funções a seguir utilizam a biblioteca stdio.h ( #include <stdio.h>)
Função gets
char *gets(char *str)
Lê uma string a partir do teclado. Retorna um ponteiro para a string lida.
Exemplo:
char s1[10];
gets(s1);
printf(“%s\n”,s1); //se digitarmos alo aparecerá alo
Função puts
int *puts(char *str)
Escreve uma string na tela seguida de \n (nova linha). Retorna EOF em caso de erro. É semelhante a printf(“%s\n”,string);
Exemplo:
char s1[10]=”alo”;
puts(s1);
printf(“%s\n”,s1); //imprimirá alo
Funções de Manipulação de Caracter
As funções a seguir utilizam a biblioteca ctype.h ( #include <ctype.h>).
int isalnum(int caracter)
Retorna um valor diferente de zero se o argumento for uma letra ou dígito. Se o caracter não for alfanumérico, isalnum() devolverá zero.
int isalpha(int caracter)
Retorna um valor diferente de zero se o argumento for uma letra do alfabeto. Caso contrário, devolverá zero.
int isdigit(int caracter)
Retorna um valor diferente de zero se o caracter for um dígito (isto é, de 0 a 9). Caso contrário, devolve zero.
int islower(int caracter)
Retorna um valor diferente de zero se o caracter for uma letra minúscula. Caso contrário, devolve zero.
int isupper(int caracter)
Retorna um valor diferente de zero se o caracter for uma letra maiúscula. Caso contrário, devolve zero.
int isspace(int caracter)
Retorna um valor diferente de zero se o caracter for um espaço branco. Caso contrário, devolve zero.
int tolower(int caracter)
Retorna o equivalente minúsculo do caracter se o caracter é uma letra; caso contrário, o caracter é devolvido sem alteração.
strong>int toupper(int caracter)