Ir ao conteúdo
  • Cadastre-se

Minha Biblioteca de strings


Walicen

Posts recomendados

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[]){}
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...