Tilbage til slide -- Tastaturgenvej: 'u'        næste -- Tastaturgenvej: 'n'          errors/input-1.c - Læsning af double og input med input validering.Lektion 7 - slide 8 : 25
Program 1

#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);

  // Handling of erroneous input - a non-controllable mess
  if (input_result == 0){
    // double and int reading both unsuccessful.
    clear_standard_input_line();
    
    // Prompt for both numbers again.
    printf("Serious now: Enter a double and an integer:\n");
    scanf("%lf %d", &x, &i);
  } 
  else if (input_result == 1){
    // int reading unsuccessful.
    clear_standard_input_line();

    // Prompt for the integer again:
    printf("Serious now: Enter the missing integer:\n");
    input_result = scanf("%d", &i);
  } 
  else if (input_result != 2){
     printf("Input of double and int. Should not happen. Bye");
     exit(EXIT_FAILURE);
  }
  else if (input_result == 2){
    clear_standard_input_line();  /* Clear rest of line */
  }  
  // We hope for the postcondition: input_result == 2


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

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