Ir ao conteúdo
  • Cadastre-se
Walicen

Minha Biblioteca de strings

Recommended Posts

Necessito de Ajuda, Preciso criar uma biblioteca e escreve as funções da <string.h>

 são elas: 

strlen(), strcpy(),strwords(), strstr(), strch(), strcat() e strinvert()

 

a que estou com mais duvidas é a strstr();

Definição :

Esta função retorna um ponteiro que aponta para uma string dentro de uma string.Em outras palavras,ela retorna a posição de memória em uma variável de memória que mostra onde começa uma possível repetição de str2 dentro de str1. Se não houver repetição, ela retorna o caractere nulo (\0).

 

Ate o que consegui fazer, Se puderem me ajudar verificando estase tentando resolver as outras. Obrigado.

 

int strlen(char *str)//Conta o Tamanho Da String{int qtde = 0;while (str[++qtde] != '\0');return qtde;}void strcpy(char str1[], char str2[])//Copia a String 2 para a String 1{int i = 0;while (str2[i] != '\0'){str1[i] = str2[i];i++;}str2[i] = '\0';}int strchr(char *str1, char ch)//Procura um Caracter na String e Retorna Sua Posição{int i = 0;for (; str1[i] != ch; i++);return i; }void strinvert(char str1[], char str2[])//Passa o conteudo da Str2 para Str1 Invertido{int i, j;for (i = 0, j = (strlen(str2) - 1); i < strlen(str2), j>=0 ; j--, i++){str1[i] = str2[j];}str1[i] = '\0';}void strcat(char str1[], char str2[])//Concatena o Conteudo da Str2 na Str1.{int x = strlen(str1);for (int i = 0; str2[i] != '\0'; i++){str1[i + x] = str2[i];}}int strcmp(char str1[], char str2[])//Compara uma String com a Outra{int i = 0, x;while (str1[i] == str2[i] && str1[i] != '\0' && str2[i] != '\0'){i++;}if (str1[i] == '\0' && str2[i] == '\0'){x = 0;}if (str1[i] == '\0' && str2[i] != '\0'){x = -1;}return x;}int strwords(char str1[]){int i = 0, cont = 0;while (str1[i] != '\0'){if (str1[i] == ' '){cont++;}i++;}return cont+1;}char strstr(char str1[], char str2[]){}

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser algo como :

cont = 0contfonte = 1tam_arraydest = ? - 1   //Segmento com a string(frase)tam_arrayfonte = ?   //Segmento com a substringWHILE (cont <= tam_arraydest){   IF (array_dest[cont] !=  array_font[0])       cont++    ELSE  {              cont2 = cont + tam_arrayfonte                 IF(cont2 > tam_arraydest)    //Testa que a substring(pelo menos inteira)nao é igual a nenhuma //sequencia na frase               return nullptr           cont++           WHILE( array_dest[cont] == array_font[contfonte] ) {                  cont++                   contfonte++           }              IF(cont  == cont2 )                       //Se cont alcançou o mesmo valor que cont2(final da //substring)                  return &array_dest[cont - tam_arrayfonte ]    //Endereço para o primeiro byte onde houve //correspondencia                cont++    //Se nao era igual incrementa e retorna ao loop                contfonte = 1                                         }}    return nullptr       //Se nada foi achado retorna ponteiro nulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×