2011-10-12 193 views
0

新程序員在這裏只有一些小的Java經驗試圖用我的手寫一些東西C.我想問某人是/否問題,根據他們的答案做一些事情,然後要求他們按Enter繼續。我有兩個問題:按回車後繼續在C中的是/否後繼續

1.)我無法讓程序接受「y」,「Y」或「是」作爲答案。我可以讓它接受一個,但不是全部三個。 「邏輯或」操作符||不工作。 2)我不能讓它停止在「按回車鍵繼續」沒有的兩個「同花順」的命令:

while (getchar() != '\n'); 

我的代碼,我試圖用如下:

int main (int argc, const char * argv[]) { 
    printf("Would you like to continue? Please press y or n.\n"); 

    if(getchar() == 'y'){ 
     printf("You pressed yes! Continuing..."); 
    } 
    else{ 
     printf("Pressed no instead of yes."); 
    } 
     //flush commands go here 
    printf("\nPress ENTER to continue..."); 
    if(getchar()=='\n'){ 
     printf("\nGood work!"); 
    }else{ 
     printf("Didn't hit ENTER..."); 

    return 0; 
} 

任何幫助,將不勝感激,謝謝。

+0

您正在使用哪種操作系統? –

回答

1

假設你在* nix的環境中工作, 您可以創建一個緩衝區存儲傳入的charact一個接着一個。 你有兩種情況:

1. Single character input 
2. 3 character String 

對於所有其他情況下,你可以盲目地說,輸入也不行
對於情況1,我應該1character應該是「Y」或「Y」
對於情況2,我應該3string應該是「是」
任何其他情況下不正確。下面是代碼:

#include<stdio.h> 
int main() 
{ 
char ch[3]; 
char c; 
int i=0; 
while(((c=getchar())!='\n')){ 
     ch[i]=c; 
     i++; 
} 
ch[i]='\0'; 
if (i==1) 
     if (ch[0]=='Y'||ch[0]=='y') 
       printf("OK"); 
     else 
       printf("Not OK"); 
else if(i==3) 
     if (strcmp(ch,"Yes")==0) 
       printf("OK"); 
     else 
       printf("Not OK"); 
else 
     printf("NOT OK"); 
return 0; 
} 

我會建議使用這樣的事情。

1

首先,你可能想保存第一getchar()的結果來測試每個可能值 如

int c=getchar(); 
if(c=='y' || c=='Y') 
.... 

究其原因,第二次測試的「輸入」部分跳過是因爲當你鍵入「Y '或‘N’按Enter鍵後,發送你的輸入 - 在\n仍然在緩衝區中,它通過在下次調用拉到getchar()

+0

這將是一個好主意,檢查EOF(你可以正確使用'int')。 –