Opgaver i denne lektion  forrige -- Tastaturgenvej: 'p'        Gå til slide, hvor denne opgave er tilknyttet -- Tastaturgenvej: 'u'  

Opgave 7.1
Input validering med rekursiv funktion


Se på følgende variant af programmet vist på den tilknyttede slide. Hvad er problemet?

#include <stdio.h>
#include <stdlib.h>

void clear_standard_input_line(void);
void get_double_int_input(void);

int main(void) {
  get_double_int_input();
  return 0;
}

void get_double_int_input(void) {
  double x = 0.0;
  int i = 0, input_result;

  // Prompting for input of a double and an int:
  printf("Enter a double and an integer:\n");
  input_result = scanf("%lf %d", &x, &i);

  if (input_result != 2){
     clear_standard_input_line();
     printf("Problems. Try again\n");
     get_double_int_input();
  }

  // Proceed - input OK - input_result == 2;
  printf("x = %f, i = %d\n", x, i);
}

void clear_standard_input_line(void){
  int ch;
  while ((ch = getchar()) != '\n' && ch != EOF);
}


Løsning