Jump to content

ajuda com gets()


dudutorri91
 Share

Recommended Posts

Ola, meu professor pediu para ler certos nomes com get() e depois escrever com o puts()

eu pensei no seguinte codigo:

#include<stdio.h>

main()
{   
     int i, e;
     printf("digite quantas palavras quer informar: ");
    scanf("%d", &e);
    char nome[e][30];
    for(i=0;i<e;i++)
    {
         printf("digite o %do nome: ", i+1);
         gets(nome[i]);
         fflush(stdin);
         }
    printf("\n");
    for(i=0;i<e;i++)
    {
        printf("O %do nome eh: ", i+1);
        puts(nome[i]);
        puts("\n");
        }
    printf("\n\n\n");
    }

o erro que dá, é que na hora q eu acrescento a parte scanf("%d", &e), ele não para pra ler o 1º nome, ela passa pra ler direto o 2 nome, e dpois ao escrever os nomes, o 1º nome fica nulo e começa a escrever apartir do 2, se eu tirar aquele scanf lá em cima, funciona tudo uma beleza, como eu faço pra arrumar? qual é o erro?

abraços

Link to comment
Share on other sites

Detectei alguns erros que não têm nada a ver com o teu problema.

- Não deves NUNCA usar a função gets.

- Esse tipo de declaração de vectores (aquela matriz que vai contêr os nomes) não é nada aconselhável, acho que em alguns compiladores nem compila. É preferível definires tu próprio um limite e declarares com esse limite, mesmo que seja grande.

Agora, em relação ao problema, usa antes a função scanf para te limpar o buffer visto que a função fflush pode ser uma futura fonte de problemas.

here since 2009

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.