undefined

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Utilizar funções de manipulação de cadeias fornecidas na biblioteca padrão (String.h)

A movimentação de valores de/para as cadeias de caracteres não pode ser efetuadas diretamente pelo comando de atribuição, ou pode ser efetuada pela movimentação caracter a caracter como em vetores ou através de funções de manipulação de cadeias de caracteres. Estas funções estão no cabeçalho do arquivo <string.h>:

#include <string.h>

Nesse momento, apresentaremos apenas as funções mais importantes de manipulação de Strings.

  • Mover caracteres para uma variável string.

A movimentação pode ser efetuada caracter a caracter (como em um vetor) ou através da função strcpy (string copy).

char *stpcpy (const char *dest,const char *src) - Copia uma string de src para outra string dest.

Exemplo de movimentação manual e através da função strcpy.

#include<string.h>
#include<stdio.h>
int main() {
char origem[16] = {'T', 'E', 'S','T','E',' ', 'D','E', ' ', 'S','T','R','I','N','G','\0'};
char destino[16];
int i;
/* Movimentação Manual */
for (i= 0; i < 16; i++) {
destino[i] = origem[i];
}
printf("\nManual\nOrigem = %s\n\nDestino = %s", origem, destino);
/*Movimentação com Strcpy*/
strcpy(destino, origem);
printf("\n\nCom Funcao\nOrigem = %s\n\nDestino = %s", origem, destino);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • Comparação de Strings.

A comparação pode ser efetuada caracter a caracter (como em um vetor) ou através da função strcmp (string compare).

int strcmp(const char *string1,const char *string2) - Compara duas strings (string1 e string2) e determina a ordem (alfabetica) das duas.

  Usamos os códigos dos caracteres para determinar precedência
  Retorno:
  Se s1 preceder s2 -> -1
  Se s2 preceder s1 ->  1
  Se s1 igual a s2  ->  0

Exemplo de comparação manual e através da função strcmp.

#include<string.h>
#include<stdio.h>
int compara(char s1[],char s2[]) {
int i;
for (i=0; s1[i] != '\0' && s2[i] != '\0'; i++) { // teste do for fica falso quando uma das strings chegar ao fim, ou pelo return
if (s1[i] < s2[i])
return -1;
else
if (s1[i] > s2[i])
return 1;
}
//strings iguais
return 0;
}
int main() {
char str1[16] = {'T', 'E', 'S','T','E',' ', 'D','E', ' ', 'S','T','R','I','N','G','\0'};
char str2[16] = {'S', 'T', 'R','I','N','G', ' ', 'D','E', ' ', 'T','E','S','T','E','\0'};
char str3[16] = {'T', 'E', 'S','T','E',' ', 'D','E', ' ', 'S','T','R','I','N','G','\0'};
int retorno;
int i;
/* Comparação Manual */
retorno = compara(str1,str2);
printf("\n\nretorno= %d", retorno);
if (retorno == 1)
printf("\nstr1 > str2");
else
if (retorno == -1)
printf("\nstr1 < str2");
else
printf("\nstr1 = str2");
/*Comparação com Strcmp*/
retorno=strcmp(str1, str3);
printf("\n\nretorno= %d", retorno);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • Tamanho da cadeia de caracteres

Informa a quantidade de caracteres (tamanho) em uma cadeia de caracteres, excetuando o caracter de fim da string('\0').

int strlen(const char *string) - Retorna o tamanho de uma string.

Exemplo de Tamanho de String.

#include<string.h>
#include<stdio.h>
int main() {
char str1[] = {'Q', 'U', 'A','L',' ','E', 'O', ' ','M','E','U',' ','T','A','M','A','N','H','O','\0'};
char str2[] = {'E',' ','A',' ', 'M','I','N','H','A', ' ','S', 'T', 'R','I','N','G','\0'};
char str3[] = {'T', 'E', 'S','T','E',' ', 'D','E', ' ', 'S','T','R','I','N','G','\0'};
int tam1, tam2, tam3;
tam1 = strlen(str1);
printf("\n\nTamanho da String 1= %d", tam1);
tam2 = strlen(str2);
printf("\n\nTamanho da String 2= %d", tam2);
tam3 = strlen(str3);
printf("\n\nTamanho da String 3= %d", tam3);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • União (Concatenção) da cadeia de caracteres

Concatena (une) caracteres de duas cadeias de caracteres em uma string.

char *strcat(const char *string1, char *string2) - Concatena os caracteres da string2 na string1.

Exemplo de Concatenação de Strings.

#include<string.h>
#include<stdio.h>
int main() {
char str1[22] = {'Q', 'U', 'A', 'L',' ','E',' ','\0'};
char str2[15] = {'A',' ', 'M','I','N','H','A', ' ','S', 'T', 'R','I','N','G','\0'};
printf("\n\nString 1= %s\n\nString2 =%s", str1,str2);
strcat(str1,str2);
printf("\n\nNova String 1= %s", str1);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content