StrLen e StrCat

Publicado por Alexandra Silva (última atualização em 05/12/2012)

[ Hits: 4.976 ]

Homepage: alexandrasp.github.io

Download 01249Alexandra.c




Um algoritmo simples, implementado em C, que procura fazer o que as funções strlen() e strcat() fazem através da utilização da biblioteca stdlib.h, sem utilização da biblioteca já pronta.

Sugestôes de melhora, críticas etc são bem vindas!

  



Esconder código-fonte

/*Nome:Alexandra da Silva Pereira
Data:29/11/2012*/

#include<stdio.h>
#include<stdlib.h>
#define tam_string 20

char StrLenA(char palavra1[tam_string]); //prototipo de todas as funcoes utilizadas
char StrLenB(char palavra2[tam_string]);
char StrCat(char palavra1[tam_string], char palavra2[tam_string], int i, int j);

int main()
{
    int i, j;
    char palavra1[tam_string]; //declara os vetores de char, seguido do recebimento dos mesmos
    char palavra2[tam_string];

    printf("Entre com a primeira palavra: ");
    gets(palavra1);
    printf("Entre com a segunda palavra: ");
    gets(palavra2);
    printf("\n+-----------+\n \n");

    StrCat(palavra1, palavra2, StrLenB(palavra2), StrLenA(palavra1)); //chama as funcoes para contar o tamanho e concaternar "strings"
    return 0;
}
char StrLenA(char palavra1[tam_string])
/*funcao que recebe primeira palavra , conta o tamanho
efetivo de caracteres dessa palavra, mostra esse tamanho
e ainda o retorna para ser parametro de StrCat()*/
{
    int i=0;
    while(palavra1[i]!='{FONTE}')
    {
        i++;
    }
    printf("O tamanho da primeira string é: %d\n\n", i);
    printf("\n+-----------+\n\n");
    return i;
}
char StrLenB(char palavra2[tam_string])
/*funcao que recebe segunda palavra , conta o tamanho
efetivo de caracteres dessa palavra, mostra esse tamanho
e ainda o retorna para ser parametro de StrCat()*/
{
    int i=0;
    while(palavra2[i]!='{FONTE}')
    {
       i++;
    }
    printf("O tamanho da segunda string é: %d\n", i);
    printf("\n+-----------+\n\n");
    return i;
}
char StrCat(char palavra1[tam_string], char palavra2[tam_string], int i, int j)
{//funcao para concaternar
    char *palavra;
    int count=0, k;
    count=i+j;

    palavra = (char*)malloc((count+1)*sizeof(char)); //aloca na memoria espaco para concaternar as duas "strings" recebidas
//a sequencia de 2 for(s) trata de pegar as strings anteriores e realocar, o ultimo for mostra a "nova string"
    for(k=j; k>=0; k--)
    {
        palavra[k]=palavra1[k];
    }
    for(k=j; k<=count; k++)
    {
        palavra[k]=palavra2[k-j];
    }
    printf("Nova string: ");
    for(k=0; k<=count; k++)
    {
        printf("%c", palavra[k]);
    }

    printf("\n\n+-----------+\n\n");

}

Scripts recomendados

Conceito (nota - aprovado - reprovado)

Função switch q armazena sequencias

Verificar intervalo de números

Estrutura de dados - cadeia

Semi Pronto (C++)


  

Comentários
[1] Comentário enviado por daemonio em 05/12/2012 - 11:23h

Olá, bastante interessante seu código. Porém, acho melhor você trocar o tipo de retorno das funções StrLen*. No código, o tipo de retorno é char, mas as funções retornam um int. Isso limitará a função a tratar corretamente somente strings com tamanho menor que 256 (tamanho de um char).

No mais, parabéns pelo código.

Abraços

[2] Comentário enviado por removido em 29/03/2013 - 23:54h

Sobre uma sintaxe extremamente concisa, "while" com apenas uma linha:

Ex:

while(palavra2[i++]);

Tem um truque parecido no "for".


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts