2017-05-31 39 views
-5

我需要一個程序,要求用戶輸入y或n爲布爾值:這裏是我的意思是:轉換yes或no來布爾格式的特殊代碼

#include<stdbool.h> 
#define bool p 
#define y 1 
#define n 0 
do { 
    /*some code*/ 

    printf("do you want to continue?! y/n"); 
    scanf("%B",&p); 
}while (p=='y'); 

我已經用它掙扎了很多,所以請幫助我!

+2

閱讀字符,檢查它是否是或否,並相應地設置一個布爾變量 – Alexander

回答

3

發佈的代碼中有許多錯誤。 #define bool p是錯誤的,因爲它將bool重新定義爲p的宏。同樣,#define y 1#define n 0不會按照您的想法進行,而是分別定義代替源代碼中出現的yn的宏,其中和0分別代替。

標準C(或我知道的任何其他C)中沒有%B轉換說明符。 &p取未定義變量的地址。

考慮限定可變cont作爲bool,並改變基於用戶輸入來控制你的循環其值:

#include <stdio.h> 
#include <stdbool.h> 

int main(void) 
{ 
    bool cont = false; 
    char input; 

    do { 
     printf("Do you want to continue (y/n)? "); 
     scanf(" %c", &input); 

     if (input == 'y' || input == 'Y') { 
      cont = true; 
     } else { 
      cont = false; 
     } 
    } while (cont); 

    return 0; 
} 

這裏,conttrue當用戶進入或yY。還請注意scanf()格式字符串的開始處的空格:" %c"。這將導致scanf()跳過領先的空格,包括換行,這可能是在輸入流中(如以前的調用所留下來scanf()

需要注意的是更好的代碼將檢查由scanf()返回的值,或者可能使用fgets()sscanf(),而不是scanf(),更仔細地驗證輸入

樣品的相互作用:

Do you want to continue (y/n)? Y 
Do you want to continue (y/n)? Y 
Do you want to continue (y/n)? N 
相關問題