Ir para o conteúdo
tmcp

Problema com gets!!!

Mensagens Recomendadas

tmcp    0
tmcp

boas!! Tenho aqui um problema com uns quantos gets (get string) :wallbash:. O problema é que o programa salta me os gets de toda a forma. Alguem tem alguma ideia de como isto pode acontecer?

desde já obrigado a todos!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Isso deve acontecer porque teres caracteres no buffer de entrada.

E já agora, por questões de segurança, devias usar antes o fgets.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

O flush (ou fflush pressuponho?) não é para aqui chamado, visto se estar a falar do stdin e essa função ser para buffers de escrita e não de leitura como é o caso (apesar de em windows até ser capaz de funcionar).

O fgets deve ser usado por questões de segurança mas não te vai resolver o problema. Para resolver o problema vais ter que meter uma função de leitura aí pelo meio.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
tmcp    0
tmcp

é que isto é mesmo esquisito! nunca me aconteceu isto. O fgets ta implementado dentro de uma funcao como outra qq. Penso que nao seja esse o problema!

Se puser um pouco do codigo axas que consegues mais ou menos ver o "erro"?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
tmcp    0
tmcp

epa o fflush funcionou mas sempre que tento fazer fgets o programa salta me esse e so me le o proximo. Parece que le fgets com numero par!! E para ler esses fgets tenho que por um fflush(stdin) antes, coisa que nao vou fazer para todos os fgets que tenho.

Se souberes alguma forma de ultrapassar isto..vou estando por aqui! Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Warrior    68
Warrior

Simplesmente estás a deixar dados no buffer de entrada.

Isso é muito comum quando se lê, por exemplo, um inteiro, e na linha seguinte uma string.

O \n da linha do inteiro não é descartado, e é isso que o fgets lê.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade