Ir ao conteúdo
  • Cadastre-se

C programa que leia uma frase dada pelo utilizador e a escreva pela ordem inversa


Joel Martins

Posts recomendados

Já tentei realizar o programa

#include <stdio.h>

void main()
{
    int i ;
    char ph[30];

    printf("Insert a phrase:");
        scanf("%s",&ph);

    printf("the sentence in reverse is:");

    for(i=30 ; i>=0 ; i--)
        {
            printf("%s",ph[i]);
        }
}

mas quando corro o programa aparece isto.

Insert a phrase:o meu nome e joel
the sentence in reverse is:(null)(null)(null)(null)(null)(null)
Process returned -1073741819 (0xC0000005)   execution time : 5.190 s
Press any key to continue.

 Onde está o erro?

Alguém me pode ajudar?

Link para o comentário
Compartilhar em outros sites

34 minutos atrás, Joel Martins disse:

Já tentei realizar o programa


#include <stdio.h>

void main()
{
    int i ;
    char ph[30];

    printf("Insert a phrase:");
        scanf("%s",&ph);

    printf("the sentence in reverse is:");

    for(i=30 ; i>=0 ; i--)
        {
            printf("%s",ph[i]);
        }
}

mas quando corro o programa aparece isto.


Insert a phrase:o meu nome e joel
the sentence in reverse is:(null)(null)(null)(null)(null)(null)
Process returned -1073741819 (0xC0000005)   execution time : 5.190 s
Press any key to continue.

 Onde está o erro?

Alguém me pode ajudar?

depois disto ainda tentei avançar um bocado mais.

#include <stdio.h>

void main()
{
    int i, tamanho, o;
    char ph[30];

    printf("Insert a phrase:");
        scanf("%s",&ph);

    printf("the sentence in reverse is:");
                tamanho = strlen(ph);
    for(i=tamanho-1 ; i>=0 ; i--)
        {
            printf("%c",ph[i]);
            printf("%d",o++);
        }
    getch();
}

Mas mesmo assim não está a funcionar.

@Midoripode tentar ajudar-me aqui neste por favor? Muito obrigado☺

Link para o comentário
Compartilhar em outros sites

@Joel Martins     alguns compiladores não aceitam o comando getch , como no Visual Studio 2019 da microsoft , e precisa de comandos extras para que funcione bem , e seu código poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <string.h>                // precisa desse include para usar string e strlen
#define getch() _getch()           // para usar getch no visual studio
int main()                         // VStudio não aceita void main 
{
    int i, tamanho, o=0;           // precisa iniciaLizar as variáveis
    char ph[30];

    printf("Insert a phrase : ");  // por que tudo em Inglês ?
    scanf("%s", ph);               // não precisa desse & comerciaL pois já tem o endereço

    printf("\nthe sentence in reverse is -:  ");
    tamanho = strlen(ph) - 1;      // pega o tamanho da frase menos um
    for (i = tamanho; i >= 0; i--) // Loop decrescente
    {
        printf("%c ", ph[i]);      // escreve as Letras do finaL para o Comeco
        printf("%d ", o++);        // escreve um numero crescente
    }
    printf("\n\n                Tecle !\n\n\n");
    getch();
    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

16 horas atrás, Joel Martins disse:

Mas mesmo assim não está a funcionar.

Para ler um texto (string/vetor de char) não use operador & no scanf.

 

Seu código está assim,

scanf("%s",&ph);

 

O correto é sem & já que ph é um vetor de char,

scanf("%s",ph);

 

No loop está tentando exibir a variável o, mas ela não foi iniciada então seu valor é indefinido.

printf("%d",o++);

 

Por isso antes de usar devia ter iniciado, p.ex,

int o = 1;

 

Mas se quiser mostrar uma sequencia com a posição dos caracteres invertidos não precisa declarar uma variável para isso, você pode usar a variável tamanho com o contador i assim,

 

printf("%c(%d)", ph[i], tamanho - i);

 

Para usar as funções scanf e printf você incluiu o header stdio.h, mas não fez o mesmo para a função strlen que está em string.h, veja os warnings do compilador,

 

main.c:13:27: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]

main.c:13:27: warning: incompatible implicit declaration of built-in function ‘strlen’

main.c:13:27: note: include ‘<string.h>’ or provide a declaration of ‘strlen’

 

O código com as alterações,

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

int main(){
    int tamanho;
    char ph[30];

    printf("Palavra: ");
    scanf("%s", ph);
    tamanho = strlen(ph);

    for(int i = tamanho - 1; i >= 0; i -= 1){
        printf("%c(%d) ", ph[i], tamanho - i);
    }
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!