2017-02-09 23 views
0
int GetUserInput(char *userStart,char *userDestination){ 
char firstLetter,secondLetter; 
while(1){ 
    printf("\nEnter 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\n"); 
     } 
    }else{ 
     PrintErrorMessage(1); 
     printf("first\n"); 
    } 
} 
*(userStart) = firstLetter; 
*(userDestination) = secondLetter; 
return 0; 


} 

我輸入了一些不正確的輸入,但是,該錯誤信息不會顯示,它只是再次重複輸入的提示。如何打印錯誤消息,當輸入不正確,然後重複提示輸入

輸出:

輸入起始位置:N
目的地位置:v

輸入起始位置:

預期輸出:

輸入起始位置: n
輸入目標位置:v
「錯誤消息」
輸入起始位置:

+0

發佈[mcve]。 –

+2

請提供[mcve]和* exact *輸入和預期輸出(不是某種表示形式)。你甚至沒有顯示循環結構。 – kaylum

+1

你的條件都是錯誤的。例如' secondLetter <'a'&& secondLetter>'o''。該條件*總是*錯誤。在'o'之後,一個字母如何在'a' **和**之後? – kaylum

回答

1

通常你會做這樣的事情:

do { 
    get_input(&a, &b); 
while (validate_input(a,b)); 

然後,validate_input返回0時,你完成。如果返回的值不是0,則再次調用get_input。