Ir ao conteúdo
  • Cadastre-se
Paula_Fabiana

Problema na hora de imprimir na tela

Recommended Posts

Então eu digito todos os dados, mas na hora de imprimir ele pula o nome, tentei usar getchar();      e o fflush(stdin); mas nada, sempre pula o nome da pessoa, (Uso o codeBlocks) 

Codigo

struct endereco
{
    char rua[40];
    int numero;

};
struct Pessoa
{
    char nome[50];
    int idade, telefone;
    struct endereco ender;
};
typedef struct Pessoa cadastro;
int main()
{
    int x, i;
    setlocale(LC_ALL, "portuguese");
    printf("Entre com a qnt de pessoas a serem cadastradas");
    scanf("%d", &x);
    cadastro p[x];
    for(i=0; i<x; i++)
    {
        printf("Nome: ");
        gets(p.nome);
        //fgets(p.nome, 50, stdin);
        getchar();
        fflush(stdin);
        printf("Idade: ");
        scanf("%d", &p.idade);
        printf("Telefone: ");
        scanf("%d", &p.telefone);
        getchar();
        fflush(stdin);
        printf("Rua: ");
        gets(p.ender.rua);
        printf("Número rua: ");
        scanf("%d", &p.ender.numero);

    }

    for(i=0; i<x; i++)
    {

        //getchar();
       // fflush(stdin);
        printf("\nNome: %s", p.nome);
        printf("\nIdade: %d", p.idade);
        printf("\nTelefone: %d", p.telefone);
        printf("\nRua: %s", p.ender.rua);
        printf("\nNúmero rua: %d", p.ender.numero);
    }

    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para postar códigos no fórum sempre use a tag CODE apertando o botão <> no topo do campo de respostas, assim você preserva a formatação do código e evita que o fórum faça alterações nele.

 

Por exemplo, o fórum "comeu" todos os [ i ] (sem espaços) do seu código, pois no fórum isso é a tag para deixar o texto em itálico, então o texto do seu código está em itálico a partir do primeiro que foi encontrado (os demais apenas somem porque o texto já tá em itálico).

 

 

 

E o problema parece ser que você não limpou o buffer de entrada depois do primeiro scanf:

scanf("%d", &x);

Logo, está sobrando um '\n' na entrada padrão após o scanf, que então é entendido como uma entrada pelo gets ou fgets que vem a seguir, logo passa direto por ele... (Prefira usar o fgets.)

 

Então precisa eliminar o '\n' da entrada com um %*c no scanf, ou um getchar após esse scanf.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 minutos atrás, isrnick disse:

Para postar códigos no fórum sempre use a tag CODE apertando o botão <> no topo do campo de respostas, assim você preserva a formatação do código e evita que o fórum faça alterações nele.

 

Por exemplo, o fórum "comeu" todos os [ i ] (sem espaços) do seu código, pois no fórum isso é a tag para deixar o texto em itálico, então o texto do seu código está em itálico a partir do primeiro que foi encontrado (os demais apenas somem porque o texto já tá em itálico).

 

 

 

E o problema parece ser que você não limpou o buffer de entrada depois do primeiro scanf:


scanf("%d", &x);

Logo, está sobrando um '\n' na entrada padrão após o scanf, que então é entendido como uma entrada pelo gets ou fgets que vem a seguir, logo passa direto por ele... (Prefira usar o fgets.)

 

Então precisa eliminar o '\n' da entrada com um %*c no scanf, ou um getchar após esse scanf.

Funcionou, era só colocar o getchar(); depois do scanf("%d", &x); super obrigada e pela dica do fgets também.

PS:  Ah.... e a respeito de como colocar no site obg também , primeiro post... haha.

  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×