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

Localhost

Virar Strings ao contrário [Meu code]

7 mensagens neste tópico

Olá pessoal, eu no outro dia abri aqui um tópico com a dúvida de como virar strings ao contrário, tive logo respostas, no entanto tive a estudar e a pensar em como transformar o código mais pequeno e utilizar o minimo de variaveis possivel e a verdade é que consegui chegar a um código bem engraçado  :P

#include <stdio.h> 
#include <conio.h>

int main()
{
char string[1024]; 
int i, tamanho; 
printf("Digite uma string: "); 
gets(string); 
tamanho = strlen(string); 
printf("A string invertida -> "); 
for(i=tamanho-1; i>=0; i--) 
{
	printf("%c" ,string[i]);
}
getch(); 
return 0;
}

É este o código , quais as diferenças? Começa logo por usar uma string a menos e depois ao fazer o printf ele nao passa a string inteira como argumento mas sim caracter a caracter, vejam o code e digam-me se gostam, aproveito para agradecer ao miguel1234, ao baderous e ao pedrosorio que me ajudaram  :smoke:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me bastante simples e funcional.... Só tenho uma coisa a apontar, não utilizes "gets" para ler string's, porque "O gets() é uma função manhosa, devido ao possivel buffer overflow" (Via Wiki Portugal-a-Programar)....

Para ler string's eu utilizo o seguinte trecho de código:

/* Ler os dados até se introduzir ENTER */
scanf("%[^\n]", cmd);
/* Limpar o buffer */
scanf("%*[^\n]"); scanf("%*c");

(Via Wiki Portugal-a-Programar)

cumps  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
#include <conio.h>

int main()
{
        char c, string[1024];
        int i, tamanho;
        printf("Digite uma string: ");
        fgets(stdin, 1024, string);
        tamanho = strlen(string);
        for(i=0; i<tamanho/2; i++)
        {
                c = string[i];
                string[i] = string[tamanho-i-1];
                string[tamanho-i-1] = c;
        }
        printf("A string invertida -> %s\n", string);
        getch();
        return 0;
}

Assim ela fica invertida na memória e em metade do tempo... :P

Já agora, quando quiseres imprimir um caracter, usa o putchar, que é muito mais rápido que o printf. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Shii, não percebi nada do code, ainda não cheguei a essa parte de buffers etc.

Mas estou a caminho, estou agora em ponteiros...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tharis a minha ideia era deixar o code comprimido, além de que (ainda) nao ouvi falar de alguns conceitos de que meteste para aí para o meio, mas agradeço o post  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que o Tharis postou foi exactamente aquilo que eu já tinha postado no teu outro tópico.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, daí eu ter dito que ainda não tinha conhecimento de alguns conceitos, como disse no outro tópico...

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