c - Sådan udskriver du fejlmeddelelse, når input er forkert, og gentag derefter prompt for input

Indlæg af Hanne Mølgaard Plasc

Problem



int GetUserInput(char *userStart,char *userDestination){
char firstLetter,secondLetter;
while(1){
    printf("
Enter starting position: ");
    scanf(" \%c",&firstLetter);
    if (firstLetter == 'x' || firstLetter=='X'){
        return 1;
    }
    printf("Enter destination position: ");
    scanf(" \%c",&secondLetter);
    if (secondLetter == 'x' || secondLetter=='X'){
        return 1;
    }

    if (!((firstLetter<'a' && firstLetter>'O') || (firstLetter<'A' && firstLetter>'O'))){
        if (!((secondLetter<'a' && secondLetter>'o') || (secondLetter<'A' && secondLetter>'O'))){
            break;
        }else{
            PrintErrorMessage(2);
            printf("second
");
        }
    }else{
        PrintErrorMessage(1);
        printf("first
");
    }
}
*(userStart) = firstLetter;
*(userDestination) = secondLetter;
return 0;


}


Jeg indtastede nogle forkerte indtastninger, men fejlmeddelelsen vises ikke, den gentager kun prompten for indtastning igen.


Produktion:



  Indtast startposition: n

  destinationsposition: v

  
  Indtast startposition:



Forventet output:



  Indtast startposition: n

  Indtast destinationsposition: v

  'Fejlmeddelelse'

  Indtast startposition:


Bedste reference


Normalt vil du gøre noget som dette:


do {
    get\_input(&a, &b);
while (validate\_input(a,b));


Så, når validate\_input returnerer 0, er du færdig. Hvis det returnerer noget andet end 0, kalder du get\_input igen.