[Ajuda] Ler uma string e inverter (C)

Iniciado por Σĸөsıҳ, 10 de Maio , 2010, 04:03:24 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Σĸөsıҳ

Estou estudando C e apareceu um exercício que não estou conseguindo passar...
Ele pede o seguinte:
"Faça um programa que inverta uma string: leia a string com gets e armazene-a invertida em outra string. Use o comando for para varrer a string até o seu final."

Esse é um exercício do for.

Eu tentei da seguinte maneira:
#include <stdio.h>
int main()
{
    int i1,i2,t=0;
    char s1[50],s2[50];
    printf("Digite uma string: ");
    gets(s1);
    for(i1=0;s1[i1]!='\0';++i1)
    {
        ++t;
    }
    i1=0;
    for(i2=t;i2>=0;--i2)
    {
        s2[i2]=s1[i1];
        ++i1;
    }
    printf("\n\nA nova string e:\n%s",s2);
    return (0);
}

... mas não da certo, pois ele não mostra a nova string.  :-\

Alguém pode corrigir o meu código por favor?
vLw
from| PSY
_
Hygnus Software
_

BiLL

Aee Σĸөsıx da uma olha no meu...



#include<stdio.h>
int main()
{
   char s1[50],s2[50];
   int t=0,i1,a;
   
   printf("Digite uma string: ");
   scanf("%s", &s1);
   for (i1=0; s1[i1] != '\0'; i1++) //descobrindo tamanho da string
    {   
     t++;
     }
   a=t-1; //variavel 'a' recendo contador, -1 pois a string começa apartir do 0
   
   
   for (i1=0; s1[i1] != '\0'; i1++) //invertendo a string
     {
      s2[a] = s1[i1];
      a--;
      }
   s2[t]='\0';
   printf("Nova string eh: %s\n", s2);
   getchar();
   getchar();
}


abç.

Σĸөsıҳ

from| PSY
_
Hygnus Software
_

FoXxD

#include <stdio.h>

/*
"Faça um programa que inverta uma string: leia a string com gets e armazene-a invertida em outra string.
Use o comando for para varrer a string até o seu final."
*/

int main(void)
{
    char str[100];
    int i;
   
    puts("Digite qualquer coisa:");
    gets(str);
   
   
    for (i=(strlen(str)--); i>=0; i--)
    {
          putchar(str[i]);       
    }
     

    getchar();
    return 0;
}

FoXxD

void *inverter(char *str)
{
     char *str_in;
     int i,x;
     
     if (!(str_in = malloc(strlen(str))))
     {
                  puts("Sem memória");
                  exit(1);
     }
     
     for (i = (strlen(str)-1) , x=0; i>=0, x <= strlen(str); i--, x++)
         {
              str_in[x] = str[i];               
         }
         
    str = str_in;
}