www.samueldiasneto.com: Linguagem C - strings

Pesquisar em todo o site
<<< Voltar Avançar >>>
Se esta página lhe ajudar, considere fazer uma doação

6. strings

6.1 Determinando  o tamanho de uma string

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);
  }

6.2 Copiando uma string em outra

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.

6.3 Unindo duas strings

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);
  }

6.4 Anexando caracteres de uma string em outra

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

strncat(destino, origem, nr_caracteres)

Exemplo:

/* Anexando caracteres de uma string
 * em outra usando a função strncat()*/

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

int main()
  {
    char string1[20],string2[6]="aeiou";

    printf("\n");
    printf("Anexando caracteres de uma string em outra\n");
    printf("------------------------------------------\n");
    printf("Entre com string1 :");
    scanf("%s",&string1);
    printf("\n");
    printf("string2 = %s\n\n",string2);
    printf("string1 + 3 caracteres de string 2 = %s\n",strncat(string1,string2,3));
    printf("\n");
    return(0);
  }

6.5 Função que determina se duas strings são iguais

int streql(char *str1, char *str2)
  {
    while((*str1 == *str2) && (*str1))
      {
        str1++;
        str2++;
      }
    return((*str1 == NULL) && (*str2 == NULL));
  }

6.6 Convertendo uma string para maiúsculas

Para converter uma string para maiúsculas use a função strupr( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strupr(string)

Exemplo:

/* Convertendo uma string em maiúsculas
 * usando a função strupr() */

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

int main()
  {
    char string[20];

    printf("\n");
    printf("Convertendo uma string para maiúsculas\n");
    printf("------------------------------------\n");
    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    printf("string digitada : %s\n",string);
    printf("\n");
    printf("Convertendo para maiúsculas : %s\n",strupr(string));
    return(0);
  }

6.7 Convertendo uma string para minúsculas

Para converter uma string para minúsculas use a função strlwr( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strlwr(string)

Exemplo:

/* Convertendo uma string em minúsculas
* usando a função strlwr() */

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

int main()
  {
    char string[20];

    printf("\n");
    printf("Convertendo uma string para minúsculas\n");
    printf("------------------------------------\n");
    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    printf("string digitada : %s\n",string);
    printf("\n");
    printf("Convertendo para minúsculas : %s\n",strlwr(string));
    return(0);
  }

6.8 Localizando a primeira ocorrência de um caractere numa string

Para isso use a função strchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strchr(string, caracter)

Este função retorna um ponteiro para  a primeira ocorrência de "caracter". Caso "caracter" não seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da string.

Exemplo:

/* Localizando o primeiro caracter numa string
 * usando a função strchr()*/

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

int main()
  {
    char string[30] = "Teste da função strchr().";
    char *ptr;

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

    ptr = strchr(string, 's');

    if (*ptr)
      {
        printf("\n");
        printf("A primeira ocorrência de s é na posição %d\n",ptr - string);
      }
    else
      printf("Caractere não encontrado.\n");

    return(0);
  }

6.9 Localizando a última ocorrência de um caractere numa string

Para isso use a função strrchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strrchr(string, caracter)

Este função retorna um ponteiro para  a última ocorrência de "caracter". Caso "caracter" não seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da string.

Exemplo:

/* Localizando o último caracter numa string
 * usando a função strrchr()*/

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

int main()
  {
    char string[30] = "Teste da função strrchr().";
    char *ptr;

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

    ptr = strrchr(string, 's');

    if (*ptr)
      {
        printf("\n");
        printf("A última ocorrência de s é na posição %d\n",ptr - string);
      }
    else
      printf("Caractere não encontrado.\n");

    return(0);
  }

6.10 Função que  conta o número de ocorrências de um caractere numa string

int contachar(char string[], char letra)
  {
    int contador, tamanho, ocorrencia = 0;
    tamanho = strlen(string);
    for(contador=1;contador <= tamanho;contador++)
      if(string[contador] == letra)
         ocorrencia++;
    return(ocorrencia);
  }
Abaixo segue um exemplo com a utilização da função contachar(). O exemplo considera que ela faz parte do arquivo de cabeçalho <samfunc.h>:
#include <stdio.h>
#include <string.h>
#include <samfunc.h>

int main()
  {
    char *string[20];
    char letra[2];
    int nr;

    printf("Testando a função contachar()\n");
    printf("---------------------------\n");
    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    printf("Entre com a letra :");
    scanf("%s",&letra);
    nr = contachar(string,letra[0]);
    printf("\n");
    printf("Contando o número de ocorrências : %d\n",nr);
    return(0);
  }

6.11 Invertendo uma string utilizando a função strrev( )

Para inverter o conteúdo de uma string use a função strrev( ). Ela faz parte do arquivo de cabaçalho string.h. Sua sintaxe é:

strrev(string)

Exemplo:

/* Invertendo uma string usando a
 * função strrev() */

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

int main()
  {
    char string[20];

    printf("\n");
    printf("Invertendo uma string\n");
    printf("---------------------\n");
    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    printf("Invertendo ==> %s",strrev(string));
    return(0);
  }

6.12 Substituindo os caracteres da string por um único caracter

Para substituir todos os caracteres da string pelo mesmo caracter use a função strset( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strset(string,caracter)

Exemplo:

/* Substituindo todos os caracteres da string
 * pelo mesmo caracter usando a função strset() */

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

int main()
  {
    char string[20];
    char caracter[2];

    printf("\n");
    printf("Substituindo os caracteres da string\n");
    printf("------------------------------------\n");
    printf("\n");
    printf("Digite a string :");
    scanf("%s",&string);
    printf("\n");
    printf("Caractere :");
    scanf("%s",&caracter);
    printf("\n");
    printf("Substituindo ==> %s",strset(string,caracter[0]));
    return(0);
  }

6.13 Comparando duas strings

Para comparar duas strings use a função strcmp( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strcmp(string1,string2)

Se as strings forem iguais a função retorna zero, se string1 for maior a função retorna um valor menor que zero e se string2 for maior a função retorna um valor maior que zero.

Exemplo:

/* Comparando duas strings com a função strcmp() */

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

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

    printf("\n");
    printf("Comparando duas strings\n");
    printf("-----------------------\n");
    printf("\n");
    printf("Entre com a primeira string :");
    scanf("%s",&string1);
    printf("\n");
    printf("Entre com a segunda string :");
    scanf("%s",&string2);
    printf("\n");

    retorno = strcmp(string1,string2);

    if(retorno == 0)
      printf("As strings são iguais.\n");
    else if(retorno < 0)
      printf("A string1 , maior.\n");
    else
      printf("A string2 , maior.\n");

    return(0); 
  }
OBSERVAÇÕES:
  1. A função strcmp( ) possui uma variante, a função strncmp( ) que compara os n primeiros caracteres de duas strings. Sua sintaxe é:

    strncmp(string1,string2,nr_caracteres)

  2. Existem ainda as funções stricmp( ) e strncmpi( ) que comparam duas strings sem considerar a caixa das letras (maiúsculas ou minúsculas).


6.14 Convertendo strings em números

Para converter strings em números utilize as funções abaixo:
 
FUNÇÃO CONVERTE STRINGS EM
atof(string) float
atoi(string) int
atol(string) long int
strtod(string) double
strtol(string) long

Estas funções fazem parte do arquivo de cabeçalho stdlib.h

Exemplo:

/* Convertendo strings em números */
#include <stdio.h>
#include <stdlib.h>

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

    printf("\n");
    printf("Convertendo strings em números\n");
    printf("------------------------------\n");
    printf("\n");
    printf("Entre com a primeira string :");
    scanf("%s",&string1);
    printf("\n");
    printf("Entre com a segunda string :");
    scanf("%s",&string2);
    printf("\n");
    printf("string1 + string2 = %f",atof(string1) + atof(string2));
    return(0);
  }

6.15 Duplicando uma string

Para duplicar uma string use a função strdup( ). Ela está no arquivo de cabeçalho string.h. Sua sintaxe é:

*strdup(string)

Exemplo:

/* Duplicando uma string */

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

int main()
  {
    char string[20];
    char *copia;

    printf("\n");
    printf("Duplicando uma string\n");
    printf("---------------------\n");
    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    copia = strdup(string);
    printf("string ==> %s\n",string);
    printf("cópia  ==> %s\n",copia);
    return(0);
  }

6.16 Localizando uma substring dentro da string

Para localizar uma substring dentro da string use a função strstr( ). Ela pertence ao arquivo de cabeçalho string.h e sua sintaxe é:

strstr(string,substring)

Se a substring existir dentro da string, a função retornará um ponteiro para a primeira letra da substring, senão retornará NULL.

Exemplo:

/* Localizando uma substring dentro de uma string */

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

int main()
  {
    char string[20],substring[20];
    char *extrai;
    int tamanho; 

    printf("\n");
    printf("Localizando uma substring dentro da string\n");
    printf("------------------------------------------\n");
    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    printf("Entre com a substring :");
    scanf("%s",&substring);
    tamanho = strlen(substring);
    extrai = strstr(string,substring);
    printf("\n");

    if(extrai)
      { 
        printf("A string contém a substring.\n");
        printf("A substring começa na posição %d.\n",extrai-string);
        printf("A substring tem %d caracteres.\n",tamanho);
      } 
    else
      printf("A string não contém a substring.\n");

    return(0);
  }

6.17 Função que remove uma substring de dentro de uma string

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

char *sstr(char *string, char *substring)
  {
    char *extrai;
    int tamanho,contador;

    tamanho = strlen(substring);
    extrai = strstr(string,substring);

    if(extrai)
      {
        for(contador = 0;contador < tamanho; contador++)
          extrai[contador] = string[(extrai - string) + contador];
        extrai[contador] = NULL;
        return(extrai);
      }
    else
      return(" ");
  }

int main()
  {
    char string[20],substring[20];

    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    printf("Entre com a substring :");
    scanf("%s",&substring);
    printf("\n");
    printf("substring ==> %s\n",sstr(string,substring));

    return(0);
  }

6.18 Função que substitui uma subtring por outra

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

char *subs_str(char *string, char *substring, char *nova)
  {
    char *extrai;
    int tamanho1,tamanho2,contador;

    tamanho1 = strlen(substring);
    tamanho2 = strlen(nova);

    if((tamanho1 > tamanho2) || (tamanho2 > tamanho1))
      return(" ");
    else
      {
        extrai = strstr(string,substring);

        if(extrai)
          {
            for(contador = 0;contador < tamanho1; contador++)
              string[(extrai - string) + contador] = nova[contador];
            return(string);
          }
        else
         return(" ");
       }
  }

int main()
  {
    char string[20],substring[20],nova[20];

    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    printf("\n");
    printf("Entre com a substring :");
    scanf("%s",&substring);
    printf("\n");
    printf("Entre com a nova substring :");
    scanf("%s",&nova);
    printf("\n");
    printf("nova string ==> %s\n",subs_str(string,substring,nova));

    return(0);
  }

6.19 Invertendo uma string sem o uso da função strrev( )

/* Invertendo uma string */

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

int main()
  {
    char string[100],invertida[100];
    char *caracter;
    int tamanho,contador;

    printf("\n");
    printf("Invertendo uma string\n");
    printf("---------------------\n");
    printf("\n");
    printf("Entre com a string :");
    scanf("%s",&string);
    
    tamanho = strlen(string);
    contador = tamanho;

    caracter = &string;

    while(*caracter)
      {
        invertida[(contador - 1)] = *caracter;
        *(caracter++); 
        contador--;
      }
    invertida[tamanho] = NULL;     

    printf("\n");
    printf("Invertendo ==> %s\n\n",invertida);
    return(0);
  }

Se esta página lhe ajudou, considere fazer uma doação
<<< Voltar Avançar >>>