Unidade C - Estrutura de Fluxo

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)

Retorna o equivalente maiúsculo do caracter se o caracter é uma letra; caso contrário, o caracter é devolvido sem alteração.