Jump to content

Ler número diferente de inteiros do que se está à espera com scanf


joaomfs
 Share

Recommended Posts

Boas, tenho uma funçao que e para ler as coordenas de uma matriz(x e y), quando leio menos cordenadas do que estou a espera (insiro 1 inteiro)o meu codigo funciona se inserir mais ele assume que apenas inseri 2, existe alguma forma de se eu mais de 2 ineiros me ser pedido novamente para inserir as coordenadas?

int nlidos=0;
while(nlidos!=2){
  printf("insira as cordenadas a procurar\n");
  nlidos=scanf("%d%d",&linha,&coluna)
}
Link to comment
Share on other sites

se tens esse código, o que tens de fazer é verificar o que sobrou no buffer de leitura:

#include <ctype.h>

int nlidos=0;
int trash;
while(nlidos!=2){
 printf("insira as cordenadas a procurar\n");
 nlidos=scanf("%d%d",&linha,&coluna);
 while ((trash = getchar()) != '\n') { // ler o lixo que está no buffer de leitura
   if (!isspace(trash))                // verificar se não é um caracter de espaço
     ++nlidos;                         // forçar o novo pedido de coordenadas
 }

}
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
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.