Ir para conteúdo
Fórum Script Brasil
  • 0

Inverter String


Novato_BR

Pergunta

Pessoal, é o seguinte, eu fiz esse código para inverter uma string, e ele inverte ... Sendo que tem um problema, a variável count assume o valor de -1 ao final dele. Eu não sei muito bem porque isso seria um problema, afinal o programa funciona perfeitamente, mas só faltaram me xingar no irc porque eu não entendi isso. Então uma ajuda sera bem vinda, ok ?

#include <stdio.h>
int main()
{
    int count,plus;
    char str1[300];
    count=0;
    plus=0;
    printf ("The strig you want inverter: ");
    gets (str1);
    do
    {plus=plus+1;}while (str1[plus] !='');
    printf ("The string has %d letters\n",plus);
    for (count=plus; str1[count]>=0; count=count-1)
    {
        printf ("%c",str1[count]);
    }
    printf ("\n the valeu of count is: %d",count);
    printf ("\n");
    return (0);
}

O problema ta nesta linha: for (count=plus; str1[count]>=0; count=count-1)

Qual seria a forma correta de implementar esse programa ?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

eu não entendi o porque da variavel count não poder assumir o valor de -1. O programa funciona beleza! Agora se o problema deles é em relação a isso, então no final é so incrementar. :D

#include <stdio.h>
int main()
{
    int count,plus;
    char str1[300];
    count=0;
    plus=0;
    printf ("The strig you want inverter: ");
    gets (str1);
    while (str1[plus] !='')
       plus++;
    printf ("The string has %d letters\n",plus);
    for (count=plus; count>=0; count--)
    {
        printf ("%c",str1[count]);
    }
    count++;
    printf ("\n the valeu of count is: %d",count);
    printf ("\n");
    getch();
}

Link para o comentário
Compartilhar em outros sites

  • 0

esse codigo não esta certo, ele esta invertendo a string, mas esta passando do comeco dela (ou seja, inverte tudo o q tiver na frente dela na memoria ate encontrar um caracter 0).

não existe problema nenhum se o printf() do final mostrar o count como -1. alias, se estiver escrito -1 significa q a inversao deu certo, não pode é estar um valor diferente disso.

o problema é chegar em -1 e continuar dentro do for, pois a string comeca na posicao 0, você não pode acessar a posicao -1, -2 e etc, porque você vai acessar outras regioes da memoria q não fazem parte da string. e seu programa só não esta travando porque a string deve estar alocada dentro da regiao ocupada pelo seu programa na memoria. agora se a string estivesse sendo alocada dinamicamente, provavelmente, na hora q você tentasse ler o endereco -1, ele ia cair em areas de memoria q você não tem permissao pra acessar e seu programa travaria.

o codigo do for correto seria o q o SleipBr passou:

for (count=plus; count>=0; count--)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...