• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lesiano

Inverter String\

9 mensagens neste tópico

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;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Rei deus patrão

Há melhor solução para fazer isto?

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Off-topic: Nunca tinha visto esse estilo de indentação, é feio! :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Há melhor solução para fazer isto?

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora