terça-feira, 7 de outubro de 2014

String

Na linguagem C, uma string (ou cadeia de caracteres) é um vetor de caracteres em que o caractere nulo ('\0') é interpretado como fim da parte relevante do vetor.  

Exemplo:
    char *s;
    s = malloc( 10 * sizeof (char));
    s[0] = 'A';
    s[1] = 'B';
    s[2] = 'C';
    s[3] = '\0';
    s[4] = 'D';

Depois da execução desse fragmento de código, o vetor s[0..3] contém a cadeia de caracteres ABC. O caractere nulo marca o fim dessa cadeia. A porção s[4..9] do vetor é ignorada.

  • Para determinar o tamanho de uma string use a função strlen( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:


strlen(string)

Exemplo:


/* Determinando o tamanho de uma string usando
 * a função strlen() */

#include <stdio.h>
#include <string.h>

int main()
  {
    char string[20];

    printf("\n");
    printf("Determinando o tamanho de uma string\n");
    printf("------------------------------------\n");
    printf("\n");
    printf("Digite a string :");
    scanf("%s",&string);
    printf("\n");
    printf("A string tem %d carateres.\n\n",strlen(string));
    return(0);
  }

  • Para copiar uma string em outra use a função strcpy( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strcpy(destino, origem)
Exemplo:
/* Copiando uma string em outra usando a
 * função strcpy() */

#include <stdio.h>
#include <string.h>

int main()
  {
    char string1[10], string2[10];

    printf("\n");
    printf("Copiando uma string em outra\n");
    printf("----------------------------\n");
    printf("\n");
    printf("Digite string1 :");
    scanf("%s",&string1);
    printf("\n");
    printf("string1 = %s\n",string1);
    printf("string2 = %s\n",strcpy(string2,string1));
    return(0);
  }

Na prática, todo conteúdo de string2 é substituído por string1.

  • Para unir duas strings use a função strcat( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strcat(destino, origem)
Exemplo:
/* Unindo duas strings usando a
 * função strcat() */

#include <stdio.h>
#include <string.h>

int main()
  {
    char string1[100], string2[10];

    printf("\n");
    printf("Unindo duas strings\n");
    printf("-------------------\n");
    printf("\n");
    printf("Digite string1 :");
    scanf("%s",&string1);
    printf("\n");
    printf("Digite string2 :");
    scanf("%s",&string2);
    printf("\n");
    printf("Unindo string1 a string2 : %s\n\n",strcat(string2,string1));
    return(0);
  }

Manipulando STRINGS

A Linguagem C não possui o tipo de dado string, as strings em C são arrays de caracteres, além disso, não temos como fazer operações básicas usando os operadores como, por exemplo, comparar dois arrays usando o operador de igualdade como fazemos com o tipo inteiro. O que temos na Linguagem C para trabalhar com strings é um conjunto de funções que fazem essas operações. Para utilizar essas funções devemos sempre incluir o arquivo de cabeçalho string.h em nossos programas.

Abaixo serão apresentadas algumas funções para manipulação de strings, assim como a descrição e um exemplo do que cada função faz.


size_t strlen (const char *s)

Calcula o tamanho da string s.

#include <stdio.h>
#include <string.h>

int
main ()
{
  char str[100] = { 0 };
  int tam;

  printf ("Entre com uma frase (no máximo 100 caracteres) : ");
  scanf ("%[^\n]", str);

  tam = strlen (str);

  printf ("A string digitada tem %d caracteres\n", tam);

  return 0;
}

char *strcpy (char *destino, const char *origem)


A função strcpy copia a string origem para a string em destino.

#include <stdio.h>
#include <string.h>

int
main ()
{

  char origem[100];
  char destino[100];

  printf ("Entre com a string : ");
  scanf ("%[^\n]", origem);


/* copia string */
  strcpy (destino, origem);

  printf ("Origem : %s\n", origem);
  printf ("Destino : %s\n", destino);

  return 0;
}

char *strncpy (char *destino, const char *origem, size_t n)


A função strncpy copia no máximo n caracteres da string origem para a string destino.

#include <stdio.h>
#include <string.h>

int
main ()
{

  char *origem = "Manipulando Strings em C!";
  char destino[20];

/* copia string com até 19 caracteres */
  strncpy (destino, origem, 19);

  printf ("Origem : %s\n", origem);
  printf ("Destino : %s\n", destino);

  return 0;
}

char *strcat (char *s1, const char *s2)


Concatena o conteúdo da string s2 em s1.

#include <stdio.h>
#include <string.h>

int
main ()
{

  char s[100];

  printf ("Digite algo : ");
  scanf ("%[^\n]", s);

  /* concatena ... no final da string digitada */
  strcat (s, "...");

  printf ("%s\n", s);

  return 0;
}

char *strncat (char *s1, const char *s2, size_t n)


Concatena no máximo n caracteres da string s2 para o final da string s1.

#include <stdio.h>
#include <string.h>

int
main ()
{

  char s1[100];
  char *s2 = "..........";

  printf ("Digite algo : ");
  scanf ("%[^\n]", s1);

  /* Concatena 3 caracteres de s2 para o final de s1 */
  strncat (s1, s2, 3);

  printf ("%s\n", s1);

  return 0;
}

int strcmp (const char *s1, const char *s2)


Compara a string s1 com s2. A função retorna um int que será zero, caso s1 seja igual s2, menor que zero, caso s1 seja menor que s2, maior que zero, caso s1 seja maior que s2.

#include <stdio.h>
#include <string.h>

int
main ()
{

  char s1[100];
  char s2[100];
  int ret;

  printf ("Digite a string s1 : ");
  scanf ("%[^\n]", s1);
  fflush (stdin);

  printf ("Digite a string s2 : ");
  scanf ("%[^\n]", s2);

  ret = strcmp (s1, s2);

  if (ret == 0)
    {
      printf ("As strings digitadas são iguais\n");
    }
  else
    {
      printf ("As strings digitadas são diferentes\n");
    }

  printf ("s1 = %s\n", s1);
  printf ("s2 = %s\n", s2);
  printf ("retorno = %d\n", ret);

  return 0;
}

int strncmp (const char *s1, const char *s2, size_t n)


Compara até n caracteres da string s1 com s2. A função retorna um int que será zero, caso s1 seja igual s2, menor que zero, caso s1 seja menor que s2, maior que zero, caso s1 seja maior que s2.

#include <stdio.h>
#include <string.h>

int
main ()
{

  char s1[100];
  char s2[100];
  int ret;

  printf ("Digite a string s1 : ");
  scanf ("%[^\n]", s1);
  fflush (stdin);

  printf ("Digite a string s2 : ");
  scanf ("%[^\n]", s2);

  /* Compara até os 3 primeiros caracteres */
  ret = strncmp (s1, s2, 3);

  if (ret == 0)
    {
      printf ("As strings digitadas são iguais\n");
    }
  else
    {
      printf ("As strings digitadas são diferentes\n");
    }

  printf ("s1 = %s\n", s1);
  printf ("s2 = %s\n", s2);
  printf ("retorno = %d\n", ret);

  return 0;
}



Nenhum comentário:

Postar um comentário