Jump to content
Sign in to follow this  
lesiano

Inverter String\

Recommended Posts

lesiano

Estou a pensar mal onde? Isto não dá...

char* inverte(char *p){
                       int tamanho = 0, i = 0;

                       while(p[i]!='\0'){
                                         tamanho++;
                                         i++;
                                         }

                       char *q = (char*)malloc((tamanho+1)*sizeof(char));
                       int aux = tamanho-1;

                       while(i<tamanho){
                                        q[i] = p[aux];
                                        i++; aux--;
                                        }
                         
                       return q;
}

Share this post


Link to post
Share on other sites
Baderous

Não falta colocar o i a 0 novamente antes do 2º while?

Seja como for, estás a ter trabalho a mais.

Share this post


Link to post
Share on other sites
lesiano

Rei deus patrão

Há melhor solução para fazer isto?

OMG já não me lembro de C. :facepalm:

Share this post


Link to post
Share on other sites
lesiano

Para mim é o melhor, pena que em grandes códigos atinjas 2154129348720934 caracteres por linha.  😎

Share this post


Link to post
Share on other sites
Triton

Há melhor solução para fazer isto?

Podias começar por usar o strlen(). ;)


<3 life

Share this post


Link to post
Share on other sites
Baderous

Por exemplo:

#include <stdio.h>
#include <string.h>

int main(void) {
    char str[1024], aux;
    int i, tam;
    fgets(str,sizeof(str),stdin);
    str[strlen(str)-1]='\0';
    printf("Antes: %s\n",str);
    tam=strlen(str);
    for (i=0;i<tam/2;i++) {
        aux = str[i];
        str[i]=str[tam-i-1];
        str[tam-i-1]=aux;
    }
    printf("Depois: %s\n",str);
    return 0;
}

Share this post


Link to post
Share on other sites
lesiano

Podias começar por usar o strlen(). ;)

Não programo em C há praí 3 meses. :facepalm:

Share this post


Link to post
Share on other sites
lesiano

Por exemplo:

#include <stdio.h>
#include <string.h>

int main(void) {
    char str[1024], aux;
    int i, tam;
    fgets(str,sizeof(str),stdin);
    str[strlen(str)-1]='\0';
    printf("Antes: %s\n",str);
    tam=strlen(str);
    for (i=0;i<tam/2;i++) {
        aux = str[i];
        str[i]=str[tam-i-1];
        str[tam-i-1]=aux;
    }
    printf("Depois: %s\n",str);
    return 0;
}

Thx

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.