imagem
Menu.c
HOME
CONTATO
AGRADECIMENTOS
 Funções STR

Funções Básicas para Manipulação de Strings

As funções para manipulação de strings apresentadas nesta página,
são versões alternativas para as funções que estão no arquivo cabeçalho string.h.

StrCpy - Copia o conteúdo de uma string para outra e coloca um terminador de string (\0).
Sua sintaxe é StrCpy (destino, origem).
No arquivo cabeçalho string.h , sua sintaxe é strcpy(destino, origem).

StrCat - StrCat concatena duas strings, adicionando o conteúdo da segunda ao final da primeira, além do terminador (\0).
Note que a primeira string deve ter espaço suficiente para conter a segunda, para que natilde;o ocorra um "estouro de buffer".

Para melhor aproveitamento do código, utilizei a função StrCpy após ter caminhado com o ponteiro até o final da str1. <--Veja a função StrCat no código abaixo-->
No arquivo cabeçalho string.h , sua sintaxe é strcat(str1, str2).

StrLen - StrLen retorna o tamanho, em caracteres, de uma string dada.
Na verdade o StrLen() procura o terminador de string (/0)
e calcula a distância dele ao início da string.
No arquivo cabeçalho string.h , sua sintaxe é strlen(str1).

Outras Funções:

Função para verificar tamanho da String - Recursiva
tamStr(char *str, int cont)

Função para imprimir caracteres da String
imprimeStr(char str)

Função para inverter String - Recursiva
inverteStr(char *str, int i)

 Código

#include <stdio.h>
#include <stdlib.h>

void StrCpy(char *dest, char *orig) {
while (*orig) {
*dest = *orig;
dest++;
orig++;
}
*dest = '\0';
}

void StrCat(char *str1, char *str2) {
while (*str1)str1++;
StrCpy(str1, str2);
}

int StrLen(char *orig) {
int cont = 0;
while (*orig++)cont++;
return cont;
}

//Funcao para verificar tamanho da String - Recursiva
int tamStr(char *str, int cont) {
return (*str++) ? cont++, tamStr(str, cont) : --cont;
}

//Funcao para imprimir caracteres da String
void imprimeStr(char str) {
printf("%c", str);
}

//Funcao para inverter String - Recursiva
void inverteStr(char *str, int i) {
(i) ? imprimeStr(str[i]), inverteStr(str, --i) : imprimeStr(str[i]);
}

int main() {
setbuf(stdout, NULL);
char ch[20] = "face", ch2[20];
printf("Entre com uma palavra: ");
fflush(stdin);
gets(ch2);
StrCpy(ch, ch2);
printf("%s\n", ch);
StrCat(ch, ch2);
printf("%s\n", ch);
printf("%d", StrLen(ch));
printf("** Inverte String **\n\n");
char str[100];
printf("Digite a String: ");
fflush(stdin);
gets(str);
printf("String invertida: ");
inverteStr(str, tamStr(str, 0));

return 0;
}

 Desafio

strcmp

Se você tentar criar duas strings com o mesmo conteúdo e compará-las como faria com números, verá que elas "não são iguais.
Isso ocorre porque, na verdade, o que está sendo comparado são os endereços de memória onde estão guardadas as strings.
Para comparar o conteúdo de duas strings, você deve usar a função strcmp (ou suas variantes).

Implemente um código em C para a função StrCmp. int StrCmp (char *s1, char *s2);
O valor de retorno é:
menor que zero se s1 for menor que s2;
igual a zero se s1 e s2 s?o iguais;
maior que zero se s1 for maior que s2.

Costuma parecer estranho dizer que uma string é menor ou maior que outra; na verdade essa comparação é entre a primeira letra que difere nas duas strings.
Assim, se tivermos s1 = "abc" e s2 = "abd", diremos que s2 é maior que s1, pois na primeira posiccedil;ão em que as duas strings diferem, a letra em s2 é "maior". É importante notar que a compara??o feita por StrCmp distingue mai?sculas de min?sculas.
Isto é, as strings "ABC" e "abc" não são iguais para essa função.

As variantes mais usadas de strcmp s;ão:
strncmp - compara apenas os n primeiros caracteres das duas strings, sendo n um terceiro argumento.
stricmp - compara duas strings sem distin??o entre mai?sculas e min?sculas. A sintaxe é igual à de strcmp.

Essa função não faz parte da biblioteca padrão, mas é comumente encontrada como extensão particular de várias delas.
Criado por João Paulo Aramuni - 2011