sábado, 25 de maio de 2013

[Programação em C] Inverter string

Olá pessoal, nesse post iremos ver um exemplo de código que inverte uma string. Iremos implementar nossa própria função para inverter uma string.

A estratégia que iremos utilizar para resolver o problema é copiar a string para outra string começando do final indo até o início.

// www.GeeksBR.com

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

char * inverter_string(char * str)
{
    int tam = 0, i, j;
    char * aux;

    // obtendo o tamanho da string
    while(str[tam] != '\0')
        tam++;

    // alocando espaco
    aux = (char*)malloc(tam * sizeof(char));
    for(i = tam - 1, j = 0; i >= 0; i--, j++)
        aux[j] = str[i];
    aux[j] = '\0';
    return aux;
}

int main(int argc, char *argv[])
{
    char * str = "www.GeeksBR.com";
    
    str = inverter_string(str);
    printf("%s\n", str);
    return 0;
}

Na linha 6 iniciamos a implementação da função inverter_string. Perceba que ela retorna um ponteiro do tipo char. Ela recebe como parâmetro também uma string que é um ponteiro para char.

Na linha 12 obtemos o tamanho dessa string. Sabemos que o caractere '\0' marca o final de uma string, por isso a condição do while é "enquanto for diferente de '\0' ". Incrementamos a variável "tam" que representa o tamanho da string.

Na linha 16 utilizamos a função malloc (biblioteca stdlib.h) para alocar espaço para a string que irá guardar a string invertida.

Na linha 17 temos um "for" para copiar a string "str" para a string "aux", começamos do final da string "str", o último caractere da string "str" é guardado na posição 0 da string "aux", o penúltimo caractere da string "str" é guardado na posição 1 da string "aux" e assim por diante.

Linha 19: adiciono o '\0' na string "aux".

Quaisquer dúvidas, deixem nos comentários, até a próxima!


Nenhum comentário: